我目前正在编写NodeJS应用程序,并且我想为函数编写测试。 SinonJS似乎是间谍/存根/模拟库的首选,但我似乎无法弄清楚如何在函数上存根方法。例如:
让我们说我正在使用名为ExecSync的库。我想在我的规范中对该库中的sh()
方法进行存根,但它似乎无法正常工作。有人能够从单独的spec文件中提供一个存储库方法的示例吗?
更清楚:
require()
包含。非常感谢任何帮助。
答案 0 :(得分:3)
有些代码会很好,但通常可以这样实现(使用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
});
});
});
当您无法存根依赖项时,另一种常见做法是将该依赖项写入您正在测试的模块,例如
mymodule.ExecSync = function(arg) {
ExecSync.sh(arg);
};
然后你可以简单地在你的模块上存根ExecSync,而不必根本调用依赖。