如何根据发送的实际参数 return?
How to return based on actual arguments being sent?
假设我们有一个带有两个参数的函数。它被多次调用,每次调用都有不同的参数。因此,不可能使用 withArgs 选项对其进行存根。
async function foo(args1, args2){
// some business logic
return result
}
我想编写一个存根函数,它将检查 实际参数 被传递(args1,args2)和 return 带有 switch case 的静态响应。以下几行内容:
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
}
})
那么,如何return实事求是呢?
您可以使用 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);
。
假设我们有一个带有两个参数的函数。它被多次调用,每次调用都有不同的参数。因此,不可能使用 withArgs 选项对其进行存根。
async function foo(args1, args2){
// some business logic
return result
}
我想编写一个存根函数,它将检查 实际参数 被传递(args1,args2)和 return 带有 switch case 的静态响应。以下几行内容:
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
}
})
那么,如何return实事求是呢?
您可以使用 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);
。