簡體   English   中英

javascript中的斷言庫、測試框架、測試環境有什么區別?

[英]What's the difference between assertion library, testing framework and testing environment in javascript?

Chai是一個斷言庫。

MochaJasmine是測試框架。

Karma是一個測試環境。

我已經閱讀了可用測試框架之間的區別:mocha、chai、karma、jasmine、should.js 等

斷言庫是驗證事情是否正確的工具。
這使得測試代碼變得更加容易,因此您不必執行數千條if語句。
示例(使用should.js和Node.js斷言模塊):

var output = mycode.doSomething();
output.should.equal('bacon'); //should.js
assert.eq(output, 'bacon'); //node.js assert

// The alternative being:
var output = mycode.doSomething();
if (output !== 'bacon') {
  throw new Error('expected output to be "bacon", got '+output);
}

測試框架用於組織和執行測試。
摩卡和茉莉是兩種流行的選擇(它們實際上有點類似)。
示例(在這里使用帶有should.js的mocha):

describe('mycode.doSomething', function() {
  it ('should work', function() {
    var output = mycode.doSomething();
    output.should.equal('bacon');     
  });
  it ('should fail on an input', function() {
    var output = mycode.doSomething('a input');
    output.should.be.an.Error;
  });
});

測試環境是您運行測試的地方。

Karma是一個邊緣案例,從某種意義上說它是一種一次性的工具,並不是很多人喜歡它。 Karma的工作原理是在瀏覽器中運行單元測試(默認為PhantomJS,一個無頭的WebKit瀏覽器),以允許您測試基於瀏覽器的JavaScript代碼。

像Mocha和Jasmine這樣的框架在瀏覽器和Node.js中都可以工作,並且通常默認為Node。

測試環境(或測試運行器)運行所有測試。 它啟動它們,匯總結果等。

測試框架是您用於創建每個測試的框架。 例如,jasmine使用的語法

it('name of test', function() {
   // do some tests
});

斷言庫是對測試結果的實際驗證

it('name of test', function() {
   assert x == 5 //pseudocode, the syntax will vary based on your asserting framework 
});

嘗試一個更簡單的答案。 我是菜鳥,但這聽起來像。

Mocha 組織測試,並且是您開始測試的地方。 nodeJS 中有基本的“斷言”,您可以使用它來測試事物是否按預期運行。

Chai 是一種擴展斷言”框架的方法,因此您可以編寫更多語義上有用的東西,例如:

expect(foo).to.be.a('string');

而不是不太明確的風格:

assert.ok(typeOf(foo) ==='string')

或者語義上下文較少的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM