如果参数匹配(如存根路由),如何使存根返回特定的存根?

时间:2018-10-08 14:49:40

标签: sinon

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

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”的属性时,传递给我的存根的参数才基本上传递给getConfig调用。

这样的地方:

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

那有意义吗?诗乃的正确做法是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用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
});
相关问题