Синон: Как вернуть на основе фактических отправляемых аргументов? - PullRequest
0 голосов
/ 15 декабря 2018

Допустим, у нас есть функция с двумя аргументами.Он вызывается много раз с разными аргументами при каждом вызове.Таким образом, его невозможно заглушить с помощью опции Args.

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 
         }

     })

Итак, как вернуться на основе реальных аргументов?

1 Ответ

0 голосов
/ 15 декабря 2018

Вы можете использовать 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 </strong> Вместо этого следует использовать var stub = sinon.stub(object, "method", fn);.

Пожалуйста, примите мой ответ, если считаете, что он полезен.: D

...