2012-03-27 57 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(); 
}); 
相關問題