假设我们有一个带有两个参数的函数。它被多次调用,每次调用都有不同的参数。因此,不可能通过withArgs选项将其存根。
async function foo(args1, args2){
// some business logic
return result
}
我想编写一个存根函数,该函数将检查正在传递的 实际参数 (args1,args2),并返回带有开关大小写的静态响应。以下几行内容:
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
}
})
那么,如何根据实际参数返回?
答案 0 :(得分: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);
。
如果您认为有用,请接受我的回答。 :D