2017-01-26 79 views
0

我有一個由客戶端代碼和服務器端(Node/Express)代碼組成的Javascript應用程序。是否有覆蓋客戶端和服務器的測試解決方案,還是您必須爲每個測試框架運行單獨的測試框架?測試同構javascript應用程序

我想問的原因是因爲我試圖在客戶端和服務器之間共享代碼,例如,一個生成唯一ID的幫助函數。這是一個好主意,還是將問題分開更好?

回答

0

這是一個複雜的問題,有多個答案。你可以做很多測試服務器端,但通常在某些時候你最終需要客戶端測試。

在許多方面,即使JavaScript應用程序可以是同構的,但客戶端與服務器端的實際執行環境在全局和語言功能方面有很大不同。要成爲測試的完成者 - 需要同時進行客戶端和服務器端測試。

從依賴於JavaScript應用的實施和模塊化更務實standpoint--一個可以選擇最小化或完全消除以下方法在客戶端測試: - 使用jsdom更換DOM API中的節點 - 對於同構作出反應的應用程序使用jest + react-addons-test-utils和/或enzyme作爲測試工具到組件實例 - 存根瀏覽器全局的需要和測試模塊隔離

在某些時候,雖然,你幾乎總是要旋轉了一個瀏覽器進行「真實世界」測試。這可以採取整體解決方案的形式,如karma或滾動自己的mocha + browserify/webpack單元測試或nightwatch進行整合/驗收測試。

除了瀏覽器全局變量,服務器端和客戶端測試的另一個重要區別是服務器端測試從來沒有有任何動態行爲。這完全在客戶身上。至於應用程序依賴於瀏覽器功能的數量,而不是同構庫功能(例如純粹的React),那麼您會發現對客戶端測試的需求越來越大。

+0

我想問的原因是因爲我試圖在客戶端和服務器之間共享代碼,例如一個生成唯一ID的幫助函數。這是一個好主意,還是將問題分開更好? – JoeTidee

+0

如果您正在測試的代碼不依賴於瀏覽器全局(DOM,位置,存儲,例如....),那麼通過所有方法只需在服務器上進行測試 – CaptEmulation