我们在文件 'mediator.js' 中有一个即时函数,它将一个 'mediator' 对象添加到全局命名空间。这个“中介”是我们唯一拥有的全局对象。
现在我们对“中介”对象进行了许多不同的单元测试。我们希望每个测试都独立运行——换句话说,每个测试都需要从调用立即函数开始,以创建一个新的干净的中介对象。
测试是用 Jasmine 编写的,我们使用 Chutzpah 和 JsTestDriver 运行它们。
那么我该怎么做呢?
- 在 Chutzpah 中,我可以将每个单独的测试放入它自己的 js 文件中,并在每个测试文件中引用 mediator.js
- 使用 JsTestDriver,我可能需要每个测试的配置文件,其中包括 mediator.js 和测试文件
我们也在考虑放弃立即模式,并有一个构造函数来创建一个 Mediator 对象。这将是一种耻辱,因为在生产代码中我们只需要创建一次中介,并且不希望构造函数在污染全局命名空间周围徘徊。
其他人在测试即时/自调用/自执行功能时肯定遇到过这个问题。那么什么是“最佳实践”?