做者:Philip Walton
譯者:Yeaseon
原文連接:點此查看javascript
譯文僅供我的學習,不用於任何形式商業目的,轉載請註明原做者、文章來源、翻譯做者及連接,版權歸原文做者全部。
___css
咱們都知道在多個瀏覽器中測試咱們的代碼是多麼的重要。至少在咱們發佈第一個項目的時候,我認爲咱們在網絡開發社區作大部分工做仍是至關不錯的。html
咱們作的不夠好的工做是測試代碼時每一次作出的改變。java
我我的對此感到很慚愧。我已經把「學習如何構建自動化、跨瀏覽器的JavaScript的單元測試」列在個人年度to-do清單中,但我每一次坐下來真正想要作的時候,我又退卻了。雖然我確定這一部分緣由是由於個人懶惰,同時我認爲這也是因爲缺少良好的可用信息在這個主題上。node
有許多工具和框架(例如 Karma)宣稱「要使自動化的JavaScript測試變得簡單」,但以個人經驗看來這些工具引入的複雜性比他們擺脫的複雜性更多。在個人工做經驗中,若是你是一個專家這些工具「能工做」的很好,但對於一個初學者是很糟糕的。我想要真正瞭解的是這個流程是如何在引擎中工做的,以便在它出現問題的時候(總會出現問題的),我能解決它。webpack
對我來講,充分了解這些是如何工做的最好方法就是嘗試從頭開始從新建立它。因此我決定去構建我本身的測試工具,而後把個人所學分享到社區中。git
在我解釋自動化過程以前,我認爲最重要的是確保咱們都在同一頁面上進行手工測試工做。github
畢竟,自動化是關於使用機器來關閉負載的重複部分的現有工做流程。若是你在充分理解手工過程以前嘗試去開始自動化,它也不會像你理解了自動化過程同樣。web
在手工過程當中,你寫了一個你的測試文件,它可能看起來像是:chrome
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