功能豐富的javascript測試框架:mocha

cnffe 9年前發布 | 9K 次閱讀 mocha 測試工具

介紹

mocha 是一個功能豐富的javascript測試框架,可以運行在nodejs和瀏覽器環境,使異步測試變得簡單有趣。mocha 串聯運行測試,允許靈活和精確地報告結果,同時映射未捕獲的異常用來糾正測試用例。

支持TDD/BDD 的 開發方式,結合 should.js/expect/chai/better-assert 斷言庫,能輕松構建各種風格的測試用例。

特點

  • 簡單

    </li>

  • 靈活

    </li>

  • 有趣

    </li> </ul>

    安裝

    通過npm全局安裝:

    npm install -g mocha

    mocha001.png

    第一個測試用例

    我們首先來見識一下mocha最基本的測試用例是怎么的結構,如下:

    測試用例:

    //模塊依賴 var assert = require("assert"); //斷言條件 describe('Array', function(){
      describe('#indexOf()', function(){
        it('當值不存在時應該返回 -1', function(){
          assert.equal(-1, [1,2,3].indexOf(5));
          assert.equal(-1, [1,2,3].indexOf(0));
        });
      });
    });

    示例解析:
    測試用例首先需要引用斷言模塊,如上文中var assert = require('assert');,代碼 assert.equal(-1, [1,2,3].indexOf(5)); 中使用的是assert.equal(actual, expected, [message]) 語法。作用等同于使用'=='進行相等判斷。actual為實際值,expected 為期望值。message為返回的信息。

    運行

    Mocha$ mocha

    斷言

    斷言(assert)指的是對代碼行為的預期。一個測試用例內部,包含一個或多個斷言(assert)。

    斷言會返回一個布爾值,表示代碼行為是否符合預期。測試用例之中,只要有一個斷言為false,這個測試用例就會失敗,只有所有斷言都為true,測試用例才會通過。

    比如上節示例中的:

    assert.equal(-1, [1,2,3].indexOf(5)); assert.equal(-1, [1,2,3].indexOf(0));

    實際值(-1)和期望值([1,2,3].indexOf(5))是一樣的,斷言為true,所以這個測試用例成功了。

    mocha 允許開發者使用任意的斷言庫,當這些斷言庫拋出了一個錯誤異常時,mocha將會捕獲并進行相應處理。這意味著你可以利用如 should.js斷言庫、 Node.js 常規的 assert 模塊或其它類似的斷言代碼庫。以下是眾所周知的適用于Node.js或瀏覽器的斷言庫:

    • should.js

      </li>

    • expect.js

      </li>

    • chai.js

      </li>

    • better-assert

      </li>

    • assert:nodejs 原生模塊,在前文示例中我們有應用到。

      </li> </ul>

      斷言庫

      Chai 是一個非常靈活的斷言庫,它可以讓你使用如下三種主要斷言方式的任何一種:

      • assert:

        </li> </ul>

        這是來自老派測試驅動開發的經典的assert方式。比如:

        assert.equal(variable, "value");

        • expect:

          </li> </ul>

          這種鏈式的斷言方式在行為驅動開發中最為常見。比如:

          expect(variable).to.equal("value");

          • should:

            </li> </ul>

            這也是在測試驅動開發中比較常用的方式之一。舉例:

            variable.should.equal("value");

            expect 的語法

            expect 庫應用是非常廣泛的,它擁有很好的鏈式結構和仿自然語言的方法。通常寫同一個斷言會有幾個方法,比如 expect(response).to.be(true) 和 expect(response).equal(true)。以下列舉了 expect 常用的主要方法:

            • ok :檢查是否為真

              </li>

            • true:檢查對象是否為真

              </li>

            • to.be、to:作為連接兩個方法的鏈式方法

              </li>

            • not:鏈接一個否定的斷言,如 expect(false).not.to.be(true)

              </li>

            • a/an:檢查類型(也適用于數組類型)

              </li>

            • include/contain:檢查數組或字符串是否包含某個元素

              </li>

            • below/above:檢查是否大于或者小于某個限定值

              </li> </ul>

              在課程開始講解什么是mocha的時說:mocha支持TDD/BDD 的 開發方式,結合 should.js、expect、chai、better-assert 斷言庫,能輕松構建各種風格的測試用例。

              這里面有兩個知識點,一個是斷言庫,另一個是 TDD/BDD ,在線練習和更多mocha的內容學習可以去匯智網

              </div>
              轉自:http://segmentfault.com/a/1190000003949229

 本文由用戶 cnffe 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!