Geo*_*lov 2 testing mocking node.js sinon chai
我想要实现的是存根一个将返回某个值的调用。该返回值由传递的参数之一和一个新值组成。
如何获取存根的参数并使用它来形成给定存根调用的返回值
例如
mockDb.query.onCall(0).return(
Tuple(this.args(0), "Some other data");
);
Run Code Online (Sandbox Code Playgroud)
我知道我可以这样做:
sinon.stub(obj, "hello", function (a) {
return a;
});
Run Code Online (Sandbox Code Playgroud)
但是,这适用于整个存根而不是单个存根调用。不幸的是,我无法为不同的调用提供不同的存根,因为我只有一个对象(db 存根)。
要在第一次调用存根时访问函数参数,您可以使用:
sinon.stub(obj, "method").onCall(0).callsFake( function(arg) {
return "data" + arg;
});
Run Code Online (Sandbox Code Playgroud)
这将首先调用存根以返回与传递的参数连接的“数据”。
我已经使用 node v7.10 和 sinon v4 对其进行了测试。在整个测试脚本下面:
const sinon = require('sinon');
let obj = {
test: (arg1, arg2) => {
return arg1 + arg2;
}
}
let stub = sinon.stub(obj, "test");
stub.onCall(0).callsFake((arg1, arg2) => {
return "STB" + arg1 + arg2;
})
console.log(stub("lol", "lol2")); // -> STBlollol2
console.log(stub("lol", "lol3")); // -> undefined
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4165 次 |
| 最近记录: |