Angularjs 角度/茉莉花/承诺/模拟测试
我对角度/茉莉花/承诺/模仿测试有点搞砸了 我有一段代码:Angularjs 角度/茉莉花/承诺/模拟测试,angularjs,jasmine,promise,Angularjs,Jasmine,Promise,我对角度/茉莉花/承诺/模仿测试有点搞砸了 我有一段代码: factory.login = function(user, pwd) { AuthenticationResource.login( {}, {"username" : user, "password" : pwd}, factory.onLoginSuccess, factory.onLoginFailure ); }; 然后我试着写一个测试: it('login', funct
factory.login = function(user, pwd) {
AuthenticationResource.login( {}, {"username" : user, "password" : pwd},
factory.onLoginSuccess,
factory.onLoginFailure
);
};
然后我试着写一个测试:
it('login', function() {
// give
// 1. make 'authenticationResource.login' return a promise that will be successfully resolved
var deferred = $q.defer();
var promise = defered.promise;
authenticationResource.login = function() {
//deferred.resolve(loginResponse);
return deferred.promise;
};
// 2. call 'factory.login' and make sure that 'onLoginSuccess' function was invoked as expected
// then
//expect(..
});
你能给我指一下正确的方向吗。似乎所有这些看起来都与我使用Java/Mockito所做的有些不同。
然后,AuthenticationResource
本身就在这里:
angular.module('main.resources').factory('AuthenticationResource', ['$resource', function ($resource) {
return $resource('/rest/authenticate/:path',
{path: "@path"}, //parameters default
{
login: { method: "POST", params: { path: "login" } },
logout: { method: "POST", params: { path: "logout" } }
});
}]);
检查我的答案
在你看到光明之前,嘲弄承诺是很困难的 我知道这是一个老问题,但万一有人偶然发现,我写信是为了帮助解决这个问题 使用它,您可以简单地测试承诺,如:
expect(promise).toBeRejected();
expect(promise).toBeRejectedWith('expected error message');
expect(promise).toBeResolved();
expect(promise).toBeResolvedWith('expected result data');
可能是我计划使用它的副本。很高兴听到。:)如果它缺少你想要的功能,请告诉我。