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"
}
}
有道理?对此,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
});
推荐阅读
- visual-studio-code - 如何通过 Fiddler 捕获 Visual Studio Code 流量?
- r - 从具有两列 R 的数据框创建邻接
- python - 如何检查特定元素的复选框?
- php - PHP:文本替换管道(竖线管道)字符
- powershell - 为什么从 catch 块运行时 Invoke-WebRequest 不遵循重定向
- wix - wix bootstrapper 导致 msi 失败
- c++ - 自己的 C++ 列表类实现有问题(插入函数)
- codeigniter - 我的 Codeigniter 会话一经创建就会自动过期
- php - PHPMailer : 有没有办法回复用户提供的电子邮件地址?
- go - 编译 protobuf 并尝试在其他包中使用它时未定义的结构的 MarshalToSizedBuffer