qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          Facebook推出JavaScript單元測試和自動化Mock工具Jest

           Facebook發布了Jest,一個開源的、基于Jasmine框架的JavaScript單元測試工具。
            Jest源于Facebook兩年前的構想,用于快速、可靠地測試Web聊天應用。它吸引了公司內部的興趣,Facebook的一名軟件工程師Jeff Morrison半年前又重拾這個項目,改善它的性能,并將其開源。
            在最基礎層面,Jest被設計用于快速、簡單地編寫地道的JavaScript測試。Jest自動模擬require()返回的CommonJS模塊,并提供了包括內置的測試環境Dom API支持、合理的默認值、預處理代碼和默認執行并行測試在內的特性。通過在并行進程中同時運行測試,Jest讓測試更快地結束。
            Morrison說:
            Jest的目標是減少開始測試一個項目所要花費的時間和認知負荷,因此它提供了大部分你需要的現成工具:快速的命令行接口、Mock工具集以及它的自動模塊Mock系統。
            此外,如果你在尋找隔離工具例如Mock庫,大部分其它工具將讓你在測試中(甚至經常在你的主代碼中)寫一些不盡如人意的樣板代碼,以使其生效。
            我們已經在Facebook親眼看到花更多的時間用于開發你的應用是多么重要(相對于花時間去準備開發你的應用),而這就是Jest關注并正在解決的問題。
            Jest與Jasmine框架的區別是在后者之上增加了一些層。最值得注意的是,運行測試時,Jest會自動模擬依賴。Jest自動為每個依賴的模塊生成Mock,并默認提供這些Mock,這樣就可以很容易地隔離模塊的依賴。Morrison說對于新測試,默認會進行隔離,開發人員現在也能夠“完全控制”需要隔離多少模塊。每個測試都可以指明哪些模塊應該或者不應該Mock。
            關于自動化Mock,Facebook的文檔有進一步的說明:
            實際上,Jest在測試環境中執行自己的require()函數。Jest的自定義require()函數加載真正的模塊,檢查它是什么樣子,然后基于它所看到的創建一個Mock版本并返回。也就是說,Jest將給你一個與真實模塊具有相同形狀的對象,但它模擬每一個Export值而不是實際的值。
            盡管Jest引入了自動化Mock,需要注意的是,開發者仍然可以使用jest.mock()和jest.dontMock()控制哪些應該或者不應該進行Mock。
            來自社區的反應絕大部分都很正面。在Hacker News,用戶Cthulu說:
            看起來很有趣:我們現在的AngularJS項目的測試套件越來越慢,部分原因是逐漸增加的測試,但主要的性能瓶頸是:
            沒有并行,即使測試套件全部是獨立的;
            DOM測試,導致大量的GC暫停;
            (可能是)PhantomJS啟動和初始化(未度量)。
            我已經做了簡單的優化,將我的那些測試分成兩半,開兩個終端運行(開發時和持續測試中),但它看來有點玄。
            直接應對依賴注入和AngularJS,Facebook說:“Jest使用不同的方法來達到相同的結果。”對于Angular,依賴作為參數進行傳遞,因此測試很容易寫。然而,Facebook指出,為了Angular中函數的可測性,開發者必須遵循其特定模式,將其傳遞給Angular的依賴注入框架。Jest的解決方案略有不同:
            Jest也能以Angular相同的方式Mock依賴,但它使用CommonJS,而不是構建一個特定的模塊加載器。這讓你能夠測試任何使用CommonJS的現有代碼,不需要重度重構以使其兼容其它模塊系統。
            用戶Caiob認同關于Jest的樂觀情緒,他也是這種依賴注入方法的擁護者,他說:“Facebook能夠提升像Jasmine這樣的現有/熟悉的工具,這非常棒。并且,我喜歡他們處理CommonJS模塊的方式。”
            Morrison說,通過Jest,Facebook希望開始這樣一種趨勢,讓測試變得更簡單,讓開發者有更多時間開發應用。讀者如果想參與這個項目,可以檢出Github庫并發送Pull請求,或者在Freenode加入#jestjs。

          posted on 2014-06-18 10:47 順其自然EVO 閱讀(236) 評論(0)  編輯  收藏 所屬分類: selenium and watir webdrivers 自動化測試學習

          <2014年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 昆明市| 沂水县| 沂南县| 工布江达县| 泊头市| 隆昌县| 邢台县| 华容县| 岐山县| 富民县| 祥云县| 保山市| 府谷县| 来宾市| 邵东县| 上犹县| 隆尧县| 黑水县| 罗源县| 托克托县| 土默特右旗| 合阳县| 筠连县| 阿拉善左旗| 镇巴县| 扎赉特旗| 蓬溪县| 育儿| 罗定市| 中宁县| 赣榆县| 那坡县| 玉门市| 邯郸市| 通州市| 营口市| 涞源县| 汽车| 吐鲁番市| 左权县| 青铜峡市|