2015-11-16 130 views
5

我需要爲我的JavaScript單頁應用程序組織單元測試和端到端測試。我使用AngularJS量角器/黃瓜進行e2e測試,Chai進行單元測試。如何在AngularJS中組織單元測試和e2e測試?

我有兩個不同的文件夾(unite2e文件夾)中的e2e和單元測試,我目前沒有利用page object設計模式。這些文件是非結構化的,不會共享很多代碼,所以我重複了很多次。

我承認這種方法不能按比例增長

是否有重組以這樣的方式我寫的代碼量最少的測試相關的最佳實踐,保證測試代碼DRY?

回答

6

首先,你應該切換到使用頁面對象模式並保持你的頁面對象在一個單獨的目錄下 - 我認爲建議調用目錄po

這是給你一個樣本,項目結構,我們目前有:

$ cd e2e 
$ tree -L 1 
. 
├── config 
├── db 
├── helpers 
├── mocks 
├── po 
└── specs 

config是我們保持我們的protractor CONFIGS特殊的目錄 - 可能有多個CONFIGS - 例如,本地測試和測試,例如,。

helpers基本上就是我們的「libs」/「utils」目錄。我們保留自定義茉莉花匹配器,輔助功能的附加「輔助」模塊。此外,我們有localStoragesessionStorage模塊,這些模塊是圍繞window.localStoragewindow.sessionStorage對象的便利包裝。我們保留protractor-http-mock mocks

po是定義頁面對象的目錄。單獨的文件中的每個頁面對象。

specs是我們所有規格都存在的地方 - 它們按邏輯組織成子目錄。


一些helpers庫是made globally available via global,例如:

onPrepare: function() { 
    global.helpers = require("../helpers/helpers.js"); 
    // ... 
}, 

此外,爲了使助手和PO進口更加方便,避免遍歷目錄爬在樹上,並以更好地處理嵌套結構,我們已經轉而使用requirePO和@邁克爾Radionov建議requireHelper助手功能,請參閱:

我也非常喜歡@finspin提出的想法,使每個頁面對象都有一個節點包。

+0

你有任何頁面對象的例子嗎? –

+0

@GianlucaGhettini是的,我們基本上遵循這裏所建議的:https://github.com/angular/protractor/blob/master/docs/page-objects.md。 – alecxe

+0

爲單元測試提供類似頁面對象的東西是否有意義? – ganqqwerty