摘要:我已經(jīng)把學(xué)習(xí)如何構(gòu)建自動化跨瀏覽器的的單元測試列在我的年度清單中,但我每一次坐下來真正想要做的時候,我又退卻了。供應(yīng)商支持許多主流的單元測試框架,包括,,和。
作者:Philip Walton
譯者:Yeaseon
原文鏈接:Learning How to Set Up Automated, Cross-browser JavaScript Unit Testing
譯文僅供個人學(xué)習(xí),不用于任何形式商業(yè)目的,轉(zhuǎn)載請注明原作者、文章來源、翻譯作者及鏈接,版權(quán)歸原文作者所有。
我們都知道在多個瀏覽器中測試我們的代碼是多么的重要。至少在我們發(fā)布第一個項目的時候,我認(rèn)為我們在網(wǎng)絡(luò)開發(fā)社區(qū)做大部分工作還是相當(dāng)不錯的。
我們做的不夠好的工作是測試代碼時每一次做出的改變。
我個人對此感到很慚愧。我已經(jīng)把“學(xué)習(xí)如何構(gòu)建自動化、跨瀏覽器的JavaScript的單元測試”列在我的年度to-do清單中,但我每一次坐下來真正想要做的時候,我又退卻了。雖然我肯定這一部分原因是因為我的懶惰,同時我認(rèn)為這也是由于缺乏良好的可用信息在這個主題上。
有許多工具和框架(例如 Karma)宣稱“要使自動化的JavaScript測試變得簡單”,但以我的經(jīng)驗看來這些工具引入的復(fù)雜性比他們擺脫的復(fù)雜性更多。在我的工作經(jīng)驗中,如果你是一個專家這些工具“能工作”的很好,但對于一個初學(xué)者是很糟糕的。我想要真正了解的是這個流程是如何在引擎中工作的,以便在它出現(xiàn)問題的時候(總會出現(xiàn)問題的),我能解決它。
對我來說,充分了解這些是如何工作的最好方法就是嘗試從頭開始重新創(chuàng)建它。所以我決定去構(gòu)建我自己的測試工具,然后把我的所學(xué)分享到社區(qū)中。
手工測試流程在我解釋自動化過程之前,我認(rèn)為最重要的是確保我們都在同一頁面上進(jìn)行手工測試工作。
畢竟,自動化是關(guān)于使用機器來關(guān)閉負(fù)載的重復(fù)部分的現(xiàn)有工作流程。如果你在充分理解手工過程之前嘗試去開始自動化,它也不會像你理解了自動化過程一樣。
在手工過程中,你寫了一個你的測試文件,它可能看起來像是:
var assert = require("assert"); var SomeClass = require("../lib/some-class"); describe("SomeClass", function() { describe("someMethod", function() { it("accept thing A and transforms it into thing B",function() { var sc = new SomeClass(); assert.equal(sc.someMethod("A"), "B"); }); }); });
這個例子用了Mocha和Node.js 資源模塊,但是重要的不是你是用的測試庫或者斷言庫,它可以使任意一個。
在Mocha中運行Node.js,在你終端通過命令行你就能運行這個測試:
mocha test/some-class-test.js
你需要一個帶有