2012-11-21 71 views
4

我終於得到了我的AngularJS測試環境設置,並試圖測試出我的應用程序中的頁面是否正常工作。這包括模板,路由,請求,指令等。AngularJS單元測試不依賴於請求數據的模擬

從我發現的情況來看,當測試一個正在運行的應用程序時,事實證明,mock需要完成大部分工作。雖然這很好,但我仍然想從我的應用程序中測試實際的模板和數據。

每當一個GET調用我的應用程序內進行的,我得到的,看起來像一個錯誤:

Unexpected request: GET application/templates/home.html 
No more request expected 
Error: Unexpected request: GET application/templates/home.html 

事實證明,它無法正常下載請求。這很好。從我認爲正在進行的測試運行器(testacular)無法下載模板文件,因爲它在一個不同的環境中(沒有提供HTTP地址)。我遇到的唯一解決方法是使用$ httpBackend服務以模擬方式存儲請求。雖然這對於某些情況很有用,但我想獲取實際數據。

關於如何解決這個問題的任何想法?

回答

3

你可能想要寫兩種不同類型的試驗:用嘲笑

  1. 單元測試來測試像控制器,指令等
  2. 運行完整的棧端到端的測試,包括在隔離元件,事情數據來自您自己的服務器。

這兩種測試每個都需要一個單獨的測試配置。

Angular爲用戶提供導航測試瀏覽器和與應用程序交互的支持。的解釋和API記錄在這裏:http://docs.angularjs.org/guide/dev_guide.e2e-testing

我testacular端到端的配置和說明張貼在這裏: https://stackoverflow.com/a/13410567/1739247

針對你自己的服務器上運行的測試的重要組成部分,是proxies,在該職位說明。

+0

我已經看過這兩個測試,並且贊同Angular的單元測試和e2e測試有明顯區別的方法。但是,即使他們的XHR請求確實查詢了實際的網站,我也想進一步測試控制器和服務。有沒有什麼辦法可以避免使用mock?感謝您的真棒回覆btw :) – matsko

+0

再次看看這個,我懷疑它與$ http是異步的並且測試是同步的。也許如果你嘗試寫異步測試會有幫助?你能給你的問題添加一些示例代碼嗎?謝謝。 –

相關問題