如果参数匹配(如存根路由),如何使存根 return 成为特定存根?

How to have a stub return a specific stub if parameters match (like stub routing)?

所以我的代码基本上是这样的:

var myStub = sinon.stub();
myStub.withArgs(sinon.match.has("key":"value")).returns({status: "OK!"});

我想在这样的存根中使用它:

stub.WithArgs(sinon.match.has("name","Configuration)).returns(myStub(params))

如果有一个名为 "name" 的 属性 的值为 "Configuration".[=14=,则传递到我的存根的参数基本上传递到我的 getConfig 调用]

在哪里这样称呼:

myFunction(
{
   name: "Configuration,
   params: {
      key: "value"
   }
}

有道理吗?正确的 Sinon 方法是什么?

提前致谢!

您可以使用 callsFake:

stub.withArgs(sinon.match.has("name", "Configuration")).callsFake((arg) => myStub(arg.params));

这是一个完整的工作 Jest 测试:

import * as sinon from 'sinon';

test('call stub from stub', () => {
  var myStub = sinon.stub();
  myStub.withArgs(sinon.match.has("key", "value")).returns({ status: "OK!" });

  const stub = sinon.stub();
  stub.withArgs(sinon.match.has("name", "Configuration")).callsFake((arg) => myStub(arg.params));

  const response = stub({
    name: "Configuration",
    params: {
      key: "value"
    }
  });

  expect(response).toEqual({ status: "OK!" });  // SUCCESS
});