是否可以在Jasmine's spyOn()

Is it possible to specify what to return for certain arguments in Jasmine's spyOn()?

本文关键字:spyOn Jasmine 是否      更新时间:2023-09-26

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