Sinon 存根参数 return 假回调
Sinon stub argument return fake callback
我只想知道是否可以在存根参数上伪造回调。
这基本上就是我想要实现的,我在 Sinon 的文档中没有找到:
function A(arg1, arg2, next){
return [arg1, arg2, next];
};
function B(string){
return string;
};
function C(){
return 'Mocked next';
};
var obj = {
A: A,
test: 'test'
};
var result1 = obj.A(1, 2, B('Next')); // result1 = [1, 2, 'Next']
sandbox.stub(obj, 'A')//.Argument[2].Returns(C());
var result2 = obj.A(1, 2, B('Next')); // result2 = [1, 2, 'Mocked next']
可能吗?
是的,有可能。
sinon
不提供直接模拟 stub
参数的方法,但它确实提供了 callsFake
让您创建自己的实现。
您可以创建一个 stub
调用原始实现,结果 C()
作为第三个参数传递,如下所示:
const original = obj.A; // capture original obj.A
sandbox.stub(obj, 'A').callsFake((...args) => original(args[0], args[1], C()));
const result = obj.A(1, 2, B('Next'));
sinon.assert.match(result, [1, 2, 'Mocked next']); // SUCCESS
我只想知道是否可以在存根参数上伪造回调。
这基本上就是我想要实现的,我在 Sinon 的文档中没有找到:
function A(arg1, arg2, next){
return [arg1, arg2, next];
};
function B(string){
return string;
};
function C(){
return 'Mocked next';
};
var obj = {
A: A,
test: 'test'
};
var result1 = obj.A(1, 2, B('Next')); // result1 = [1, 2, 'Next']
sandbox.stub(obj, 'A')//.Argument[2].Returns(C());
var result2 = obj.A(1, 2, B('Next')); // result2 = [1, 2, 'Mocked next']
可能吗?
是的,有可能。
sinon
不提供直接模拟 stub
参数的方法,但它确实提供了 callsFake
让您创建自己的实现。
您可以创建一个 stub
调用原始实现,结果 C()
作为第三个参数传递,如下所示:
const original = obj.A; // capture original obj.A
sandbox.stub(obj, 'A').callsFake((...args) => original(args[0], args[1], C()));
const result = obj.A(1, 2, B('Next'));
sinon.assert.match(result, [1, 2, 'Mocked next']); // SUCCESS