Node.js,Mocha,使闭包中的全局变量可用

pab*_*era 8 javascript mocha.js node.js

我目前正在使用Node设置一些mocha测试,一般来说它们都可以工作.我现在遇到了一个我无法解决的问题.

我有一个包含以下内容的JS文件:MyClass.js(用于class MyClass+的常规CoffeeScript输出constructor: ->)

编辑:这是浏览器代码,我只想用Node来测试它.(这甚至是可取的吗?)

(function() {

  window.MyClass = (function() {

    function MyClass() {
      // Do something cool here
    }

    return MyClass;

  })();

}).call(this);
Run Code Online (Sandbox Code Playgroud)

我现在在我的测试文件中需要MyClass.js.一旦我运行它,它直接抛出一个错误

TESTFILE:

var myclass = require('MyClass.js');
...
describe('MyClass', function() { ... });
Run Code Online (Sandbox Code Playgroud)

错误:

ReferenceError: window is not defined.
Run Code Online (Sandbox Code Playgroud)

到目前为止,我理解为什么会发生这种情况,Node中不存在窗口.但我无法想出一个解决方案.我实际上并不特别需要真实的window物体,所以我想嘲笑它就足够了.但它不是......

var window = {},
    myclass = require('myclass.js');
...
describe('MyClass', function() { ... });
Run Code Online (Sandbox Code Playgroud)

这个命令也没有帮助: $ mocha --globals window

我仍然得到同样的错误.任何想法都非常感谢!

plu*_*us- 1

1)您正在寻找的是module.exports在 Node 中公开事物:

http://openmymind.net/2012/2/3/Node-Require-and-Exports/

2)另外,你在Node中不需要IIFE,你可以删除(function() {...

3)你总是可以在 Github 上查看一些流行的 Node 存储库来查看示例,查看 Mocha 代码,因为你正在使用它,你会学到一两件事。