62

Chai是一个断言库。

MochaJasmine是测试框架。

Karma是一个测试环境。

我已经阅读了可用测试框架之间的区别:mocha、chai、karma、jasmine、should.js 等

4

3 回答 3

62

断言库是验证事情是否正确的工具。
这使得测试代码变得更加容易,因此您不必执行数千条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);
}

测试框架用于组织和执行测试。
摩卡和茉莉是两种流行的选择(实际上它们有点相似)。
示例(在此处使用 mocha 和 should.js):

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.js。

于 2014-09-05T03:30:15.393 回答
53

测试环境(或测试运行器)是运行所有测试的地方。它启动它们,聚合结果等。

测试框架是您用来创建每个测试的工具。例如,茉莉花使用的语法

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 
});
于 2014-09-05T03:09:24.747 回答
0

尝试一个更简单的答案。我是菜鸟,但这就是听起来的样子。

Mocha 组织测试,是您开始测试的地方。nodeJS 中有基本的“断言”,您可以使用它来测试事情是否按预期运行。

Chai 是一种扩展断言”框架的方法,因此您可以编写更多语义上有用的东西,例如:

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

而不是一个不太明确的风格:

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

或者语义上下文较少的东西。

于 2022-02-27T20:03:40.377 回答