0
我有一個寧靜的API的AngularJS服務:
angular
.module('app', [
])
.service('api', ['$http', '$q', function APIService($http, $q) {
this.get = function (dataProperty, params) {
return $http({
method: 'get',
url: 'https://some.api/rest/',
params: angular.extend({
default_params...
}, params)
})
.then(
function (result) {
if (result.data.status === 'ok') {
return result.data[dataProperty];
} else {
return $q.reject(angular.extend(new Error(result.data.message), { result: result.data }));
}
},
function (reason) {
return $q.reject(angular.extend(new Error('AJAX request to the API failed'), { reason: reason.data }));
});
};
}]);
我試圖測試這個api.get下列要求:
describe('api', function() {
var
$httpBackend,
service;
beforeEach(module('app'));
beforeEach(inject(function (_$httpBackend_, _api_) {
$httpBackend = _$httpBackend_;
service = _api_;
}));
afterEach(function() {
$httpBackend.verifyNoOutstandingExpectation();
$httpBackend.verifyNoOutstandingRequest();
});
it('', function() {
$httpBackend
.when('get', 'https://some.api/rest/')
.respond({
data: {
status: 'ok'
}
});
service.get('status', {});
$httpBackend.flush();
$httpBackend
.expect('get', 'https://some.api/rest/');
});
});
Error: AJAX request to the API failed in bower_components/angular-mocks/angular-mocks.js (line 279)
我要對正確設置測試:
但我每次得到錯誤回調?我相信.when
和.response
用於僞造實際的$ http調用,但我無法獲得成功回調觸發。
你有data.stat和data.status - 應該是相同的 –
也有是在代碼中使用遞延毫無意義 - 它可以簡化 –
?是。 ,他們應該是兩個數據。狀態。在我的代碼中是正確的,當我簡化爲SO時,我剛纔介紹了這個錯字。 – Dave