angular アプリケーションの単体テストの作成を開始しようとしていますが、テスト可能な方法でサービスを正確にモックする方法がわからないため、非常に迅速に停止ブロックにヒットします。
REST呼び出しをモックする方法はありますか?それ以外の場合、テストでサービス内のすべてをミラーリングする必要があるように思えますが、これは私には正しくないようですが、テストの作成はかなり新しいので、おそらくこれが想定されている方法です達成すること。どんな助けでも大歓迎です。
私のサービスは次のとおりです。
angular.module('resources.users', ['ngResource'])
.factory('User', function($resource) {
var resource = $resource('/api/index.php/users/:username', {}, {
'update': {method: 'PUT'}
});
resource.getUser = function(username, successCb) {
return resource.query({username: username}, successCb);
};
return resource;
});
私のテストはこれまでのところ次のもので構成されています。
describe('User', function() {
var mockUserResource;
beforeEach(module('resources.users'));
beforeEach(function() {
mockUserResource = sinon.stub({
getUser: function(username) {
mockUserResource.query({username: username});
},
query: function() {}
});
module(function($provide) {
$provide.value('User', mockUserResource);
})
});
describe('getUser', function() {
it('should call getUser with username', inject(function(User) {
User.getUser('test');
expect(mockUserResource.query.args[0][0]).toEqual({username: 'test'});
}));
})
});