Jasmine有一个spyOn
函数,但它似乎只有两个参数-对象和要调用的函数名称:
spyOn(foo, 'getBar').andReturn(745);
因此,例如,如果我呼叫
foo.getBar()
,我应该得到745。我只是在想,如果我有一个单元测试想要模拟两个不同的对
getBar
的调用,而这两个参数返回两个不同的结果,那该怎么办?例如说我想模拟以下结果,如何实现以下目标?
getBar(1) = 700
getBar(2) = 500
最佳答案
您可以使用andCallFake
完成此操作:
spyOn(foo, 'getBar').andCallFake(function(n) {
if (n === 1) {
return 700;
} else if (n === 2) {
return 500;
}
throw "Invalid input";
});