0

Jasmine 有一个spyOn函数,但它似乎只有两个参数 - 对象和要调用的函数名:

spyOn(foo, 'getBar').andReturn(745); 

例如,如果我打电话,foo.getBar()我应该得到 745。

我只是想知道,如果我有一个单元测试想要模拟两个不同的调用getBar,两个不同的参数返回两个不同的结果。

例如说我想模拟以下结果,我怎样才能实现以下结果?

getBar(1) = 700  
getBar(2) = 500
4

1 回答 1

3

您可以使用andCallFake来完成此操作:

spyOn(foo, 'getBar').andCallFake(function(n) {
  if (n === 1) {
    return 700;
  } else if (n === 2) {
    return 500;
  }

  throw "Invalid input";
});
于 2013-07-23T14:23:20.427 回答