2014-06-26 144 views
1

據我瞭解,不推薦使用Scenario-runner。所以現在你將在Karma運行你的單元測試,並在Protractor中測試e2e。Angular中的單元測試

對我來說,啓動瀏覽器(karma)來運行你的單元測試感覺不對。我的假設是否正確?你如何測試你的Angular應用程序?

回答

2

當測試角度時,一個相當不錯的標準是使用phantomjs無頭瀏覽器來進行單元測試。無論你如何看待它,你都需要一個JavaScript引擎啓動並運行,然後才能測試。但是,由於沒有用戶界面,因此使用無頭瀏覽器要快得多。我使用Karma,chai和sinon(用於模擬) - 我的開發工作流程使用phantomjs,然後我的CI和發佈版本使用實際的瀏覽器IE,Chrome等。我也在CI構建運行時使用BrowserStack。

你可以看到測試的例子,善緣配置here

你可能會想看看咕嚕/一飲而盡,以實際管理測試的過程。

你在做什麼特別是在測試之後?

+1

「事實標準」可能是一個輕微的誤稱。它是* a *標準,「事實上」(即實際的標準,無論好壞)都可能是一個措辭問題。 (對不起,「那傢伙」,哈哈) –

+1

你說得對 - 我會編輯答案 – Jon

1

我真的不喜歡Chrome每次運行Karma時都會啓動,所以我已經切換到PhantomJS並且它「無聲地」工作。

2

如果您想知道您的應用在不同瀏覽器中的表現如何,您需要在這些瀏覽器中運行它。不同的瀏覽器有不同的DOM實現,JavaScript代碼和功能等

例如,如果你運行在Chrome或PhantomJS下面的代碼會工作得很好,但在IE8,它會失敗:

var arr = [1, 2, 3] 

arr.forEach(function(item) { 
    console.log(item); 
}); 

forEach在IE8中不可用,但它在Chrome中。對IE8運行代碼的單元測試會發現,對PhantomJS的單元測試而不是已經發現了這一點。

...所以如果你想像PhantomJS那樣爲你的開發週期運行「無頭」的東西,那很好,但是你確定你正在測試你在構建時關心的所有瀏覽器(希望與CI)