2013-02-12 139 views
0

我試圖在我的開發過程中引入單元測試,我不知道如何去做。JavaScript單元測試。什麼模擬?

我有一個很大的應用程序模塊(分開的js文件)。例如:

  • videoInfo.js
  • availableVideos.js
  • availableChannels.js
  • networkSettings.js
  • .......

也有爲其餘部分提供服務的幾個模塊:

  • eventHandler.js
  • i18n.js
  • ajax.js
  • configuration.js
  • auth.js
  • baseModule.js
  • ........

現在的問題是:我如何測試像使用所有服務模塊的videoInfo.js這樣的模塊?我看到兩種方法:

  • 我只加載videoInfo.js並模擬所有的內部接口。這個問題是,如果任何內部接口發生變化,我不會發現錯誤。
  • 我加載的所有模塊(整個應用程序),並與實際應用環境中的測試videoInfo(除將要模擬外部AJAX調用)

什麼好辦法,當你有一個這樣做很多內部依賴?

回答

2

理想情況下,您希望在測試套件中使用這兩種方法。

你想嘲笑所有的依賴關係(在你的videoInfo.js的例子中),以便你可以隔離它的代碼和其他東西,並確保它的工作正常。根據您擁有的代碼設計,這可能很困難。由於代碼可能不是用測試編寫的,所以不適合嘲笑。

您還希望有一整套應用程序級別的測試,確保各部分之間的所有交互都能正常工作。根據應用程序的不同,這些測試可能非常脆弱,因爲依賴於您無法控制的數據。

這些測試可能會在單獨的套件中,以便它們可以獨立於其他每個運行。

如果您剛剛開始編寫代碼測試,請編寫最適合您的測試。測試是代碼,應該在進行時重構。寫出最簡單的測試,你可以。爲遺留代碼編寫測試非常困難。目前的設計可能很難正確測試。所以,當你做出改變時,盡你所能。