2016-12-15 66 views
1

我目前正在一個非常大的模塊化Web應用程序工作。前端使用AngularJS 1.x實現。該項目大約2年前,從未有任何單元測試作爲開發過程的一部分完成。現在需要爲至少85%的Angular代碼庫添加單元測試。普遍的共識似乎是:「用Jasmine/Karma或Mocha/Chai/Sinon」進行單元測試。AngularJS 1.x和磁帶JS

看過常見的測試庫後,我擔心的一般是需要將數據模擬和單元測試放入工作量。它看起來過分,幾乎和重新開發應用程序一樣糟糕。最近我還閱讀了一些關於使用像Jasmine這樣的複雜測試庫進行單元測試的一些開銷的文章(請參閱:https://medium.com/javascript-scene/why-i-use-tape-instead-of-mocha-so-should-you-6aa105d8eaf4#.1bzhv0q1f

關於使用Tape JS進行測試的部分讓我想知道是否可以在Angular 1.x的我對單元測試非常陌生,想知道是否有人使用Tape with Angular 1.x進行單元測試?這可能嗎?

有關磁帶優點/缺點/經驗和Angular中的單元測試的想法,將不勝感激。

謝謝。

+0

我從來沒有嘗試過用膠帶AngularJS,但我喜歡這個主意。我在Jasmine/Karma編寫我的單元測試,這確實是一大堆工作來模擬。我試圖通過儘可能少地嘲弄來減少工作量,以便讓我的測試通過。其中一部分是確保我寫的功能是純粹的。我也只用$ componentController進行測試。我不在我的單元測試中編譯任何html。 – user2954463

回答

0

繼續我的評論。

我認爲每個人使用Jasmine的原因是他們想通過AngularJS接口來測試他們的代碼,那需要一個測試工具。

例如 - 假設您正在編寫組件測試。你將不得不引導組件的angular.module。您還必須通過$ componentController創建組件控制器的實例。如果控制器需要任何依賴關係,則必須確保這些依賴關係也有自己的angular.module自舉。

茉莉花做得很好。

但是,茉莉花可能很快變得笨拙。它介紹了各種全局變量。 BeforeEach涉及很多重複。爲了運行你的測試,你可能需要使用Karma,它需要很多的依賴關係,而且速度很慢。

我覺得你可以跳過所有這些,只要使用TapeJS,如果你沒有測試你的代碼爲普通的舊JavaScript。我認爲這種方法對於單元測試是可以的 - 但對於e2e測試,您應該深入茉莉花/量角器。

例如,我的AngularJS應用程序是用Typescript語法編寫的。每個組件控制器和服務都是一個也被導出的打字稿類。因此,要使用TypeJS進行測試,您只需導入打字稿類,創建它的一個實例,然後瞧。您現在可以訪問所有的方法(假設它們都是公開的),並且可以按預期測試輸入/輸出。

這應該適用於AngularJS 1.5+,但如果你有一個應用程序與很多指令,我不知道如何工作。

我希望這有助於。花費數天試圖讓測試跑步者工作是最糟糕的。

瞭解更多:

https://ponyfoo.com/articles/testing-javascript-modules-with-tape