2012-03-27 58 views
1

我们在文件'mediator.js'中添加了一个'mediator'对象到全局名称空间的直接函数。这个“调解者”是我们唯一的全局对象。如何使用Jasmine/Chutzpah/JsTestDriver单元测试JavaScript即时函数

现在我们对'mediator'对象有许多不同的单元测试。我们希望每个测试都独立运行 - 换句话说,每个测试都需要通过调用立即函数来创建新的干净介体对象。

测试用Jasmine编写,我们用Chutzpah和JsTestDriver运行它们。

那么我该如何做到这一点?

  • 在放肆,我可以把每个测试到它自己的js文件,并在每个测试文件参考mediator.js
  • 随着JsTestDriver,我可能需要为每个测试,其中包括调解配置文件.js和测试文件

我们也在考虑放弃立即模式,并且有一个构造函数来创建一个Mediator对象。这将是一个耻辱,因为在生产代码中,我们只需要创建一个中介器,并且不希望构造函数挂在污染全局名称空间周围。

当测试即时/自我参与/自我执行功能时,其他人肯定会遇到这个问题。那么什么是'最佳实践'?

回答

2

我认为公开调解器的构造函数并让每个测试覆盖现有的全局成员可能是最好的选择。公开一个对象构造函数将是一个大问题。听起来像变通办法比暴露方法更加努力。

喜欢的东西:

// mediator.js 

function createMediator(){ ... } 

window.mediator = createMediator(); 



// In unit test 

beforeEach(function() { 
    window.mediator = createMediator(); 
}); 
相关问题