[英]What's the difference between assertion library, testing framework and testing environment in javascript?
斷言庫是驗證事情是否正確的工具。
這使得測試代碼變得更加容易,因此您不必執行數千條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.