微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Rewire 是否设置当前正在运行的模块变量以及指定的模块变量?

如何解决Rewire 是否设置当前正在运行的模块变量以及指定的模块变量?

因此,我使用 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?