我是使用mocha和sinon进行单元测试的新手,只是为了了解更多信息,我已经存根了一个函数来返回一些字符串,在我的代码中,我将该函数称为内部函数。我的测试是查看存根返回字符串是否分配给了一个变量。请查看代码片段以了解更多
file.specjs
let sinon = require("sinon");
let filejs = require('./file.js');
let expect = require ("chai").expect;
it('should run only the outer function' ,function() {
// I try to stub my function here
sinon.stub(filejs,'test1').callsFake ((someArg) => {
return "stubbed string";
});
// Now I will call my test outer function
filejs.test();
expect(filejs.param).to.equal("stubbed string");
})
let param;
module.exports = {
test,
test1
}
function test () {
module.exports.param = test1();
}
function test1() {
console.log("should not be called);
let data = "some data";
return data;
}
由于我已经存根了函数test1,我不希望调用它,并且test1的return被分配给param,由于我们伪造了函数以返回不同的字符串,我希望这个字符串被设置为param变量。
但是当我运行测试时,我看到这个错误
断言错误:预期"某些数据"等于"存根字符串">
尝试以下编辑。。。
function test () {
module.exports.param = module.exports.test1();
}
因为你想做的是有机会工作。您需要sinon
来修改module.exports
,并且测试中的代码需要从该对象读取test1()
。它可能需要嵌套得更深才能修改……我不知道。我在使用sinon.stub(require('./something'))
时遇到问题
我想我在回复中做到了https://repl.it/repls/NegativeEnragedMainframe