javascript - 是否可以指定 Jasmine 的 spy On() 中的某些参数返回什么?

标签 javascript unit-testing jasmine

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

关于javascript - 是否可以指定 Jasmine 的 spy On() 中的某些参数返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17812916/

相关文章:

javascript - 尝试从 Django 服务器设置值时,Java 脚本给出无效的语法错误

javascript - 如果未定义则定义 Float32Array

javascript - 如何知道递归的异步任务何时完成

python - Python中的单元测试用于具有多个返回值的方法

java - Camel : Mock a processor to test Route

javascript - 具有异步功能的 promise 不等待履行

javascript - 如何使用 ng-options AngularJS 将输入字段添加到特定选择字段?

java - 检查 Java 单元测试中密码是否经过哈希处理

javascript - 如何创建 Karma/Jasmine 单元测试来检查依赖于其他模块的 Angular 服务

Angular 4单元测试错误 "TypeError: Cannot read property '订阅'未定义”