问题描述
因此,我使用 Mocha 对 Rewire 进行了一些测试,我注意到行为对我来说似乎很奇怪。使用 myModule.__set__()
似乎实际上是在指定模块 (myModule) 和当前模块的全局范围(运行 __set__()
的模块)中设置指定变量。例如:
此代码在运行 mocha test
后运行:
Test.js:
var rewire = require("rewire")
var sinon = require("sinon")
var test2 = rewire("./test2.js")
var expect = require("chai").expect
var spy = sinon.spy()
describe("test",function () {
beforeEach(function () {
test2.__set__("console",{ log: spy })
})
it("test should be equal to 3",function () {
test2.test1()
console.log("testing5")
expect(spy.callCount).to.equal(3)
})
})
Test2.js:
module.exports = {
test1() {
console.log("test")
console.log("test")
console.log("test")
}
}
在这里,我希望“testing5”实际上被记录到控制台,但是 3 个“test”只被记录在 spy 中,并且 callCount 等于 3。然而这不是正在发生的事情. “testing5”没有被记录,但被记录到那个 sinon 间谍,并且测试失败,因为 callCount 是 4,而不是 3。对我来说,这似乎不是故意的。我做错了什么吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)