javascript - Sinon:如何根据发送的实际参数返回?
问题描述
假设我们有一个带有两个参数的函数。它被多次调用,每次调用都有不同的参数。因此,不可能使用 withArgs 选项对其进行存根。
async function foo(args1, args2){
// some business logic
return result
}
我想编写一个存根函数,它将检查传递的实际参数(args1,args2)并返回带有 switch 案例的静态响应。以下几行:
sinon.stub(TestModule, "foo")
.resolves(asyn function(args1, args2){
switch(args2){
case "a":
return 1
case "b":
return 2
case "c":
return 3
default:
return 0
}
})
那么,如何根据实际参数返回呢?
解决方案
您可以使用stub(obj, 'meth').callsFake(fn)
动态检查传入的内容并对其进行响应。
一个例子是:
const mockFunction = (arg1, arg2) => { switch(arg2) {case "a": return 1 ...}}
sinon.stub(TestModule, "foo").callsFake(mockFunction);
请注意,对于较早版本的 Sinon < 3.0.0
您应该var stub = sinon.stub(object, "method", fn);
改用。
推荐阅读
- android - react-native run-android build 由于错误而失败
- objective-c - 在“LargeTitleText”标题后面的“UINavigationBar”中添加“UIView”
- sql-server - DBMS 或 RDBMS 与 MS SQL Server Management Studio 有何关系?
- reactjs - Npm 无法 tp 找到文件 - ENOENT
- .net - 在 BarcodeDataMatrx 中更改模块的大小会裁剪代码图像
- javascript - 如何在 Angular 4 中使用 ua-parser-js
- javascript - 附加另一个时删除子表
- android - 交叉编译平台
- join - 合并 2 个表并将第二个表中的数据作为 ArrayList 发送
- java - Hashmap 的 containsKey 方法是否是线程安全的,如果映射被初始化一次,并且不再被修改