$http
GET リクエストとハンドラーを返す角度サービスをテストしようとしていますthen
が、関数内でロジックが実際に機能することをテストできませんthen
。以下は、サービス コードの基本的な切り詰められたバージョンです。
angular.module('app').factory('User', function ($http) {
var User = {};
User.get = function(id) {
return $http.get('/api/users/' + id).then(function (response) {
var user = response.data;
user.customProperty = true;
return user;
});
};
return User;
});
そして、ここにテストがあります:
beforeEach(module('app'));
beforeEach(inject(function(_User_, _$q_, _$httpBackend_, _$rootScope_) {
$q = _$q_;
User = _User_;
$httpBackend = _$httpBackend_;
$scope = _$rootScope_.$new();
}));
afterEach(function () {
$httpBackend.verifyNoOutstandingRequest();
$httpBackend.verifyNoOutstandingExpectation();
});
describe('User factory', function () {
it('gets a user and updates customProperty', function () {
$httpBackend.expectGET('/api/users/123').respond({ id: 123 });
User.get(123).then(function (user) {
expect(user.customProperty).toBe(true); // this never runs
});
$httpBackend.flush();
});
});
呼び出しのロジックをテストするためにほとんどすべてを試したような気がするthen
ので、誰かが提案を提供できる場合は、大いに感謝します.
編集:私の問題は非標準の注入慣行によるものでもあったため、以下の回答はそれ以外で機能しました。