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";
});

09-20 21:51