web-dev-qa-db-ja.com

JavaScriptのアサーションライブラリ、テストフレームワーク、テスト環境の違いは何ですか?

Chai はアサーションライブラリです。

Mocha および Jasmine はテストフレームワークです。

およびKarmaはテスト環境です。

利用可能なテストフレームワークの違い:mocha、chai、karma、jasmine、should.jsなど

49
Nader

アサーションライブラリは、物事が正しいことを確認するツールです。
これにより、コードのテストがはるかに簡単になるため、数千のifステートメントを実行する必要がなくなります。
例(should.jsおよびNode.js assertモジュールを使用):

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);
}

テストフレームワークは、テストの整理と実行に使用されます。
モカとジャスミンは人気のある2つの選択肢です(実際、これらは似ています)。
例(ここで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は、ブラウザー(デフォルトではヘッドレスWebKitブラウザーであるPhantomJS)内でユニットテストを実行することで機能し、ブラウザーベースのJavaScriptコードをテストできます。

MochaやJasmineなどのフレームワークは、ブラウザーとNode.jsの両方で機能し、通常はデフォルトでNodeになります。

46
Zach Mertes

テスト環境(またはテストランナー)は、すべてのテストを実行するものです。それらを起動し、結果を集約します。

テストフレームワークは、各テストの作成に使用するものです。たとえば、ジャスミンは次の構文を使用します

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 
});
44
Jeff Storey