gpt4 book ai didi

javascript - 在 Node.js 中监视 require

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

在单元测试中,我想验证 SUT 是否使用特定参数调用 require。基本上我的 SUT 是一个具有以下实现的小模块:

module.exports = function () {
require('foo');
};

我现在想写一个这样的测试:

var sut = require('./sut');
it('requires foo.', function () {
sut();
expect( ??? );
});

所以问题是:如何验证是否使用正确的参数调用了 require?我使用 Sinon.js spy 进行了尝试:

var spy = sinon.spy(require);
sut();
expect(spy.callCount).to.be.equal(1);
expect(spy.calledWithExactly('foo')).to.be(true);
require.restore();

但这行不通。当我运行测试时,Mocha 告诉我:

Error: expected 0 to equal 1

我做错了什么,我该如何解决?

PS:我不需要使用 Sinon.js,所以如果另一个模块更适合我的情况,其他一切也都很好。

最佳答案

有一个名为 proxyquire 的模块,您可以使用它覆盖单元测试目的的依赖项:https://npmjs.org/package/proxyquire

您的单元测试可能如下所示:

var proxyquire =  require('proxyquire');

var sut = proxyquire('./sut', { 'foo': function(){ /* insert test code here */ });

我不确定这是否正是您想要的,但也许您会发现它有帮助。

关于javascript - 在 Node.js 中监视 require,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20677648/

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