编程语言
首页 > 编程语言> > javascript – 使用sinon间谍验证函数调用和检查参数

javascript – 使用sinon间谍验证函数调用和检查参数

作者:互联网

我想验证我的单元测试中foo()内部调用了bar().

我认为Sinon spies可能是合适的,但我不知道如何使用它们.

有没有办法检查方法是否被调用?也许甚至提取bar()调用中使用的参数?

var spy = sinon.spy(foo);

function foo(){
    bar(1,2,3);
}

function bar(){ }

foo();

// what to do with the spy?

http://jsfiddle.net/8by9jg07/

解决方法:

在你的情况下,你试图看看是否调用了bar,所以你想要窥探bar而不是foo.

doc中所述:

function bar(x,y) {
  console.debug(x, y);
}
function foo(z) {
  bar(z, z+1);
}
// Spy on the function "bar" of the global object.
var spy = sinon.spy(window, "bar");

// Now, the "bar" function has been replaced by a "Spy" object
// (so this is not necessarily what you want to do) 

foo(1);

bar.getCall(0).args => should be [1,2]

现在,监视函数内部强烈地将你对“foo”的测试与它的实现结合起来,所以你将陷入通常的“mockist vs classical”辩论中.

标签:javascript,unit-testing,sinon
来源: https://codeday.me/bug/20191001/1837541.html