【问题标题】:How to return based on actual arguments being sent?如何根据发送的实际参数返回?
【发布时间】:2018-12-15 08:27:05
【问题描述】:

假设我们有一个带有两个参数的函数。它被多次调用,每次调用都有不同的参数。所以,不可能用 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 
         }
         
     })

那么,如何根据实际参数返回呢?

【问题讨论】:

    标签: javascript unit-testing mocking sinon stub


    【解决方案1】:

    您可以使用stub(obj, 'meth').callsFake(fn) 动态检查传入的内容并对其进行响应。

    一个例子是:

    const mockFunction = (arg1, arg2) => { switch(arg2) {case "a": return 1 ...}}
    sinon.stub(TestModule, "foo").callsFake(mockFunction);
    

    注意,对于早期版本的诗浓 你应该改用var stub = sinon.stub(object, "method", fn);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-06
      • 2019-06-25
      • 2020-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多