【发布时间】:2012-06-07 06:23:03
【问题描述】:
我正在编写一个用于浏览器的应用程序,并且我想为我的库代码编写自动化测试。我想在浏览器之外,在像Node 这样的命令行环境中运行这些测试。我还没有选择一个测试框架,虽然我倾向于像 Mocha 或 Jasmine 这样的 BDD 框架。
我的代码依赖于Knockout 的可观察属性。不幸的是,Knockout 库不仅包含可观察的属性,还包含将它们绑定到 DOM 的代码。因此,如果我只是尝试从 Node 中 require() Knockout 库,我会收到错误,因为该库正在尝试引用 Node 中未定义的 window、navigator 和 document 变量。 Knockout 实际上并没有使用任何这些变量很多——它主要是对 DOM 绑定的一点特征检测,这对我来说并不重要——但因为它确实使用了它们,所以 Node甚至不会加载文件。
所以这是我的问题:我可以在模块加载时将虚拟变量注入到模块中吗?我可以说“在你加载源文件之后,但在你开始运行之前它,让我在模块内部设置一些变量,以便代码能够成功运行”?
我知道CoffeeScript 已经修补了Node 的模块加载器,因此它可以加载.coffee 文件以及.js;因此,如果我只知道如何,似乎也有一些方法可以修补它以注入变量。
【问题讨论】:
标签: unit-testing node.js knockout.js