1

因此,我正在使用 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。对我来说,这似乎不是故意的。有什么我做错了吗?

4

0 回答 0