2013-12-23 191 views
8

有很多問題詢問如何在量角器測試中模擬http響應。如何做到這一點不是問題,我們應該這樣做是一個問題。AngularJS量角器測試 - E2E測試是否有固定裝置?

http://en.wikipedia.org/wiki/Test_fixture#Software

我已經超過4年QA工程師,大部分既低電平(單位)控制器的測試,模型等,高層次(集成)測試我的自動化測試經驗的交易完整的系統。在我的紅寶石世界體驗中,我們使用Capybara進行集成測試以及藍圖和工廠女生(針對不同項目)來創建模擬數據庫條目。這是我們的集成/ E2E測試。

我最近才轉移到使用AngularJS的JavaScript團隊。最初的內置測試框架(現已棄用)具有模擬的後端模塊,它似乎適合我們的需求。量角器現在是標準。只有量角器蒸過後,我才聽到使用夾具進行E2E測試的反應。很多帖子都指出E2E測試應該測試整個堆棧,所以任何後端都不應該被嘲弄並且可以訪問。

應該集成測試使用器材,爲什麼?

+0

我使用這兩種測試。使用模擬後端測試「E2E」測試來測試UI的細節(當單擊按鈕B時出現div A等),以及使用真實後端更粗粒度的E2E測試來確保前端和後端的工作原理應該如此。 –

+1

我的想法是,您應該能夠在沒有後端的情況下進行E2E測試 - 因爲後端可能與前端不同,而且時間線可能不同。 Mocks可以成爲推進開發的有用工具,並且可以輕鬆地將寫入的測試更改爲在不再需要模擬時接受實際的後端。 – jonh

+0

爲什麼不使用燈具而關心的是,當我多次爲創建操作運行E2E測試時,我將在我的數據庫中創建越來越多的虛擬數據並清除該數據將涉及我的過程中的另一個步驟。 – wbeange

回答

0

是的,我們使用ngMockE2E來模擬後端,然後我們將一些幫助器暴露給窗口對象,這樣我們就可以播種各種模擬數據狀態。我們還使用興農給力測試日期sensative UI特定的時間,使所有新的Date()調用返回你想

+2

你們有沒有搬到量角器?它不能很好地與ngMockE2E提供的模擬後端一起工作 - 我知道一些人已經開始工作 - 但我沒有。 – jonh

2

什麼這裏有一個詞彙的問題。在Angular世界中所謂的「e2e」測試與端到端測試無關。它只是UI部分的端到端,這意味着根本沒有e2e測試。這是UI測試。

戈傑科·阿德齊奇,在「規範由例如」一書中,recommands做功能,基於夾具的測試,即,「應用程序的皮膚下面的」無UI的一部分。

回答你的問題:

- 如果UI測試有夾具?不,使用模擬或存根

- 如果後端測試有夾具?是的

+0

你能否詳細說明一下「UI測試是否有夾具?不,使用模擬或存根」?謝謝 –

+0

我的意思是夾具不僅要讓測試正常工作,還要考慮隨之而來的業務相關用例。在UI上工作時有時候是有道理的,但不能僅基於UI可以實現的所有業務案例進行測試。 – bdavidxyz

0

我在這裏面臨與個人代碼項目相同的問題。我正在使用MEAN堆棧,我的解決方案是:

  1. 使用Grunt運行測試。
  2. 啓動節點服務器之前,使用貓鼬燈具設置MongoDB的測試數據庫(https://github.com/powmedia/mongoose-fixtures
  3. 用參數啓動節點服務器,使其使用測試分貝。

如果在不同的堆棧上,您可以採用這種方法,儘管Grunt作爲一般工作的參與者非常有幫助。

1

你在問2個問題 - 關於e2e測試集成測試。 :)

e2e測試,至少在Angular的世界裏,正在測試您的完整應用程序,因爲真正的用戶可以與它進行交互。這包括測試您的後端請求和響應。但是,如果運行速度慢並且需要資源,切換到較小(甚至是假)版本的後端以進行測試是非常合理的。

集成測試是你的代碼的一部分,並單元測試是個別單位。這兩次都可以嘲笑部分或全部依賴項來隔離測試。

因此,在所有使用固定裝置或嘲笑的情況下都可能有用。

查看my answer here瞭解更多關於Karma和量角器的用例,優點和侷限性的詳細討論。