AngularJS 测试:Jasmine 模拟回调
AngularJS testing : Jasmine mock callback
我有基本的 angular JS 知识,但我对 Jasmine 单元测试还很陌生。
我的问题如下:
我需要测试一个服务方法(来自 myService 的方法):
myService.method = function(args)
{
var parameter = "myParam";
anotherService.anotherMethod(parameter, function(result)
{
//Stuff to test using result
if(result == "blabla")
testFunction("param");
});
};
如何将 anotherService.anotherMethod 模拟为 return 结果并测试 myService.method 的其余部分?例如,我需要检查是否已使用 "param"(使用 expect(myFunction)toHaveBeenCalledWith("param"))调用了 testFunction。
感谢您的帮助
你可以用 Jasmine Spies 做这些,但我建议使用 Sinon,因为它支持更多功能。
相关文档在此处:Sinon
如果您没有使用 Sinon 的自由,这里有一份 Jasmine Spy 备忘单:
Jasmine Spy Cheatsheet。如本文所述,
var testPerson = new Person();
spyOn(testPerson, "getName");
testPerson.toString();
expect(testPerson.getName).toHaveBeenCalledWith("param");
我想做的是为我的 AJAX 调用创建一个假函数并使用其中一个参数:
spyOn(anotherService, 'anotherMethod').and.CallFake(function(){
//Get args : fake result of AJAX call and callback
var fakeResult = arguments[0];
var callback = arguments[1];
return callback(fakeResult);
});
我有基本的 angular JS 知识,但我对 Jasmine 单元测试还很陌生。 我的问题如下:
我需要测试一个服务方法(来自 myService 的方法):
myService.method = function(args)
{
var parameter = "myParam";
anotherService.anotherMethod(parameter, function(result)
{
//Stuff to test using result
if(result == "blabla")
testFunction("param");
});
};
如何将 anotherService.anotherMethod 模拟为 return 结果并测试 myService.method 的其余部分?例如,我需要检查是否已使用 "param"(使用 expect(myFunction)toHaveBeenCalledWith("param"))调用了 testFunction。
感谢您的帮助
你可以用 Jasmine Spies 做这些,但我建议使用 Sinon,因为它支持更多功能。
相关文档在此处:Sinon
如果您没有使用 Sinon 的自由,这里有一份 Jasmine Spy 备忘单: Jasmine Spy Cheatsheet。如本文所述,
var testPerson = new Person();
spyOn(testPerson, "getName");
testPerson.toString();
expect(testPerson.getName).toHaveBeenCalledWith("param");
我想做的是为我的 AJAX 调用创建一个假函数并使用其中一个参数:
spyOn(anotherService, 'anotherMethod').and.CallFake(function(){
//Get args : fake result of AJAX call and callback
var fakeResult = arguments[0];
var callback = arguments[1];
return callback(fakeResult);
});