gpt4 book ai didi

javascript - sinon.js withArgs 回调函数

转载 作者:搜寻专家 更新时间:2023-10-31 23:21:45 25 4
gpt4 key购买 nike

我想在我的服务器端 javascript 中测试某个函数是否以某种方式被调用。我正在使用 Sinon 模拟和 stub 。 Sinon 有 withArgs() 方法,用于检查函数是否使用特定参数调用。如果我将一个大型复杂回调函数作为参数之一传递,是否可以使用 withArgs() 方法?

var foo = function(){ method: function () {}};
// use: foo.method(function(){ console.log('something') } );
var spy = sinon.spy(foo, 'method');
spy.withArgs( ??? );

最佳答案

您的示例有点令人困惑,因为您已将 foo 定义为一个函数,但后面的注释调用了 foo.method():

var foo = function(){ method: function () {}};
// use: foo.method(function(){ console.log('something') } );

无论如何,“大型复杂回调函数”只是一个对象。 withArgs 返回一个由给定参数过滤的 spy 对象,您可以使用一个函数作为该过滤器的一部分。例如:

var arg1 = function () { /* large, complex function here :) */ };
var arg2 = function() {};
var foo = {
method: function () {}
};
var spy = sinon.spy(foo, 'method');
foo.method(arg1);
foo.method(arg2);
console.assert(spy.calledTwice); // passes
console.assert(spy.withArgs(arg1).calledOnce); // passes
console.assert(spy.withArgs(arg1).calledWith(arg1)); // passes
console.assert(spy.withArgs(arg1).calledWith(arg2)); // fails, as expected

JSFiddle

关于javascript - sinon.js withArgs 回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23417184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com