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)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 莲花县| 耿马| 绥芬河市| 黎城县| 福贡县| 乌拉特中旗| 怀集县| 苗栗市| 鹰潭市| 尚志市| 上杭县| 湖北省| 永城市| 来凤县| 邵阳市| 佛冈县| 太仓市| 彩票| 锦屏县| 孝义市| 黔江区| 汤原县| 高陵县| 抚州市| 渭源县| 桐庐县| 丁青县| 临汾市| 乐昌市| 南投市| 泗洪县| 开封县| 都兰县| 阜城县| 莆田市| 邵武市| 梅河口市| 垦利县| 舟山市| 方正县| 崇礼县|