因此,我正在使用 Rewire with Mocha 进行一些测试,并且我注意到对我来说似乎很奇怪的行为。usingmyModule.__set__()
似乎实际上在指定的模块(myModule)中设置了指定的变量,并且在当前模块的全局范围内(运行的那个__set__()
)。例如:
此代码在运行后运行mocha 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)
})
})
测试2.js:
module.exports = {
test1() {
console.log("test")
console.log("test")
console.log("test")
}
}
在这里,我希望“testing5”实际记录到控制台,但 3 个“测试”只记录在间谍中,并且 callCount 等于 3。但这不是正在发生的事情。“testing5”没有被记录,而是被记录到那个 sinon 间谍中,并且测试失败了,因为 callCount 是 4,而不是 3。对我来说,这似乎不是故意的。有什么我做错了吗?