gpt4 book ai didi

node.js - 使用 SinonJS stub 库

转载 作者:搜寻专家 更新时间:2023-11-01 00:45:02 27 4
gpt4 key购买 nike

我目前正在编写一个 NodeJS 应用程序,我想为一个函数编写一个测试。 SinonJS 似乎是首选的 spy / stub /模拟库,但我似乎无法弄清楚如何在函数上 stub 方法。例如:

假设我正在使用一个名为 ExecSync 的库。我想从我的规范中在该库上 stub sh() 方法,但它似乎无法正常工作。有人会好心地提供一个从单独的规范文件内部 stub 库方法的示例吗?

为了更清楚:

  • spec.js - 这是我编写测试的地方。
  • util.js - 这是我正在测试的方法所在的位置。该方法调用 execSync.sh() 并通过 npm 和 require() 包含。

如有任何帮助,我们将不胜感激。

最佳答案

有些代码会很好,但通常可以这样实现(使用 mocha)

describe('A test', function() {
beforeEach(function() {
// what you want to stub is passed as a string
sinon.stub(ExecSync, 'sh').yields(null,40);
});

afterEach(function() {
ExecSync.restore();
});

it('has behaviour', function() {
ExecSync.sh(function(err, res) {
// err = null, res = 40
});
});
});

另一种无法 stub 依赖项的常见做法是将该依赖项写入被测模块,例如

mymodule.ExecSync = function(arg) {
ExecSync.sh(arg);
};

然后你可以简单地在你的模块上 stub ExecSync 而根本不需要调用依赖项。

关于node.js - 使用 SinonJS stub 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21438462/

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