存根后是否会在摩卡单元测试中调用嵌套函数:断言错误:预期'some data'等于'stubbed string'



我是使用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

相关内容

  • 没有找到相关文章

最新更新