gpt4 book ai didi

javascript - 如何使用 Sinon 创建测试替身来阻止实际函数的执行

转载 作者:行者123 更新时间:2023-11-28 09:00:34 28 4
gpt4 key购买 nike

我正在使用Mocha和Sinon进行javascript单元测试。我想测试在某种情况下是否调用某种方法。

但是,到目前为止,我无法测试该方法是否被调用。为了更清楚地说明,我想要一个假方法来替换实际方法,因为我不想模拟整个应用程序状态来使这个简单的测试通过。

这是我的实际测试代码:

it('calls the handleResults method when its model syncs', function () {
var spy = sinon.stub( this.appview, 'handleResults' );
this.appview.model.fetch();
server.requests[0].respond( 200,
{ "Content-Type": "application/json" },
JSON.stringify( [ { id: "casa", text: "Something" } ] )
);
spy.should.have.been.called;
});

真正的 this.appview.handleResults 方法正在被调用,而我想调用一个假版本,它除了检查它是否被调用之外什么也不做。

我做错了什么?

最佳答案

文档说得很清楚,通过使用stub,原来的函数会被mock替代,不会被调用:

As spies, stubs can be either anonymous, or wrap existing functions. When wrapping an existing function with a stub, the original function is not called.

var stub = sinon.stub(object, "method");

Replaces object.method with a stub function. The original function can be restored by calling object.method.restore(); (or stub.restore();). An exception is thrown if the property is not already a function, to help avoid typos when stubbing methods.

关于javascript - 如何使用 Sinon 创建测试替身来阻止实际函数的执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17795094/

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