国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

mocha

ruicbAndroid / 2728人閱讀

摘要:抹茶是一款測試框架,支持在和瀏覽器端運行。只要程序拋出一個錯誤,就會認為測試不通過。使用內置的斷言庫斷言拋出一個如果參數是一個則會拋出這個。并且根據的狀態來決定測試是否通過。

這篇文章百分之99都是照著mocha官網的內容來寫的。就是個掃盲文,如果你想獲得關于mocha更深層次不為人知的內容,還是別浪費你寶貴的十幾分鐘了,馬上叉掉。不為啥的,我就做個筆記,方便以后復習。

mocha(抹茶)是一款javascript測試框架,支持在node和瀏覽器端運行。它比QUnit更完善,可擴展性更強。在官網上,對它的描述就是簡單,可擴展,有趣。(有趣是什么鬼)

使用
// 1
npm install mocha -g 
mocha ./test.js

// 2
npm install mocha --save-dev 
node .node_modules/mocha/bin/mocha ./test.js
主要api

mocha只有兩個主要的api。

describe(name, fn) 定義一組測試

it(name, fn) 定義一項測試

describe("proxy", function(){
  it("proxy data 1", function(done){
    this.timeout(1000)
    assert.ok(true, "fail")
  })

你也可以在一組測試里面再定義一組測試

describe("group1", function(){
  describe("child1", function(){
   })
})

只測試其中某一組測試

describe("test", function(){
  describe.only("testc1", function(){
  })
 })

跳過某一組測試

describe("test", function(){
  describe.skip("testc1", function(){
  })
 })
斷言

mocha沒有佩戴自己的斷言庫,它允許你使用第三方斷言庫,如node 內置的assert, chai等。只要程序拋出一個錯誤,mocha就會認為測試不通過。

const assert = require("assert") // 使用node內置的斷言庫

describe("proxy", function(){
  it("proxy data 1", function(done){
    this.timeout(1000)
    assert.ok(true, "fail")
  })
node assert 斷言

assert.fail(String | Error)
拋出一個AssertionError, 如果參數是一個Error,則會拋出這個Error。

assert.ifError(any)
只要any 不等于undefined | null 就拋出any

assert.ok(value[,maessage])
測試value 是否為真值

assert.equal(actual, expected [,message]) | assert.notEqual(actual, expected [,message])
對actual 和 expected 執行 == 比較

assert.strictEqual(actual, expected [,message]) | assert.notStrictEqual(actual, expected [,message])
對actual 和 expected 執行 === 比較

assert.deepStrictEqual(actual, expected[,message]) | assert.notDeepStrictEqual()
測試是否深度全等, 執行的是=== 比較

異步測試

回調形式

describe("Array", function(){
  it("should correct", function(done){
    setTimeout(done,1000)
  })
})

如果done()執行的時候有參數,如done("錯誤"), 那么mocha判定測試不通過。 你也可以直接傳入一個Error對象到done函數中,如done(new Error("fail"))

promise的形式

describe("Array", function(){
  it("should correct", function(){
    return Promise.resolve()
  })
})

如果it 函數的返回值是一個promise, 將被是為是一個異步測試。并且根據promise的fullfill狀態來決定測試是否通過。
值得注意的是,當你覺得使用promise的形式時候,你就不應該再it的回調函數聲明參數done。這個會讓mocha認為你其實是想通過done的形式來完成異步測試的。

describe("Array", function(done){ // 這個done是不需要的。
  it("should correct", function(){
    return Promise.resolve()
  })
})

使用async-await

describe("Array", async function(done){ // 這個done是不需要的。
  it("should correct", function(){
    let result = someAsyncOperation()
    assert.ok(true, result)
  })
  
})
箭頭函數

mocha不提倡使用箭頭函數,因為it, describe都是綁定mocha context執行的,在箭頭函數中,無法獲取到mocha context。如以下會報錯

describe("Array", () => {
  it("shoule correct", (done) => {
     this.timeout(1000) // can not read property timeout of undefind
  })
})
hook

mocha 在整個測試周期中,提供了一組hook鉤子來讓開發者在測試開始之前準備環境或者是測試完成之后清理環境。

describe("hooks", function() {

  before(function() {
    // runs before all tests in this block
  });

  after(function() {
    // runs after all tests in this block
  });

  beforeEach(function() {
    // runs before each test in this block
  });

  afterEach(function() {
    // runs after each test in this block
  });

  // test cases
});

異步鉤子
在鉤子函數中傳入done,并且在異步鉤子完成時調用它。

describe("hooks", function() {

  before(function(done) {
    // runs before all tests in this block
    setTimeout(() => {
      done() // 2000ms之后才會執行下一個鉤子
    }, 2000)
  })
});

mocha默認的測試超時時間是2000ms,如果你的異步鉤子準備時間超過2000ms,請事先聲明超時時間

在瀏覽器端測試

以后補上

vscode 插件

vscode 上面有一個輔助mocha測試的插件 mocha sidebar。

New code coverage support

see all tests in vscode side bar menu

git lens for running/debugging directly form the code

decorations which shows test status(pass/fail/not run) from code

run tests for each level hierarchy from all tests to a single test(and each describer of course)

debug tests for each level hierarchy from all tests to a single test(and each describer of course)

auto run tests on file save

see tests results directly on the code

run/debug results directly from the code

see test errors as decoration

NEW add context menu on folders in explorer to set subdirectory (#2).

設置使用babel-register
在vscode的首選項設置如下:

"mocha.requires": ["babel-register"]

mocha sidebar 0.20.22 版本目前只支持babel 6, 如果你使用babel 7 ,那么你就只能在命令中運行測試

mocha --require @babel/register xxx.js
ES6 的module 語法

ES6的import 和 export 在node中并沒有實現,所以我們需要通過Babel轉換ES6的模塊語法。

npm install babel@6 babel-preset-env babel-register

//.babelrc
{
  "presets": ["env"]
}

現在你可以在啟動時加入--require參數來讓使用了ES6 import/export語法的測試文件在加載時使用babel編譯。

mocha --require babel-register ./test/test.js
import _ from "lodash"
describe("Array", function(){
  it("should correct", function(){
    return Promise.resolve()
  })
})

如果你不使用--require參數,那么你需要顯式使用babel-register

// index.js
require("babel-register")
require("./test.js")

// test.js
import _ from "lodash"
describe("Array", function(){
  it("should correct", function(){
    return Promise.resolve()
  })
})

// comman line
mocha ./index.js

babel-register 會在node 的require中注入一個鉤子,讓所有以.es6, .jsx, .js, .es作為后綴結尾的文件在require的時候都先經過babel編譯。這樣子我們在index.js require("./test.js")的時候,就已經將import 語法轉換為requrie語法了。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/99461.html

相關文章

  • Mocha瀏覽器測試入門教程

    摘要:在中,需要添加源代碼以及斷言庫運行測試使用瀏覽器打開,就會運行測試,并且看到運行結果可知,測試通過使用命令行測試對于習慣在終端敲命令行的程序員來說,用瀏覽器打開去進行測試顯得非常不合時宜。 摘要: 如何使用Mocha在瀏覽器中測試JavaScript代碼? 本文所有代碼都在Fundebug/mocha-browser-test倉庫中。 showImg(https://segmentfa...

    Aldous 評論0 收藏0
  • 探知js測試(3)

    摘要:模塊測試模塊語法我這里提及一點。基本工程目錄一個良好的工程目錄,能夠幫助你測試成本降到最低。這一塊算是獨立于單元測試的。 前面兩篇已經把,js測試的模式,框架,斷言庫基本介紹了一遍。這里,我們要上升到整體測試架構上來.首先,單元測試的對象是模塊,這里我們就要將自己測試目標調整到對模塊測試上來。所以,這里我們需要使用CommonJS或者es6的模塊的寫法了。另外需要了解,mocha框架測...

    陳江龍 評論0 收藏0
  • 探知js測試(3)

    摘要:模塊測試模塊語法我這里提及一點。基本工程目錄一個良好的工程目錄,能夠幫助你測試成本降到最低。這一塊算是獨立于單元測試的。 前面兩篇已經把,js測試的模式,框架,斷言庫基本介紹了一遍。這里,我們要上升到整體測試架構上來.首先,單元測試的對象是模塊,這里我們就要將自己測試目標調整到對模塊測試上來。所以,這里我們需要使用CommonJS或者es6的模塊的寫法了。另外需要了解,mocha框架測...

    pakolagij 評論0 收藏0
  • Mocha中文文檔

    摘要:中文文檔這個是對文檔的翻譯,都是我一個字一個字敲出來的。任何鉤子函數在執行的時候都可以傳遞一個可選的描述信息,可以更容易地準確指出測試中的錯誤。不給測試用例傳遞一個回調函數,就是被等待實現的測試用例,但同樣會在報告中體現出來。 mocha中文文檔 這個是對mocha文檔的翻譯,都是我一個字一個字敲出來的。水平有限,激情無限,歡迎大家批評指正。文檔我也放在了我的github上,后續,我會...

    lentrue 評論0 收藏0
  • ES6+mocha+istanbul,針對ES6語法的帶覆蓋率檢查的mocha測試

    摘要:安裝注意版本為為支持語法安裝依賴包注意為了使支持語法,在加入注意為了使支持語法,在加入小貓快跳最終運行或都可以參考 安裝 mocha, chai,mochawesome,istanbul npm install mocha chai mochawesome istanbul@1.0.0-alpha.2 --save-dev 注意1: istanbul 版本為 ^1.0.0-alpha....

    wuyangnju 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<