Zac*_*tes 48

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

测试框架用于组织和执行测试.
摩卡和茉莉是两种流行的选择(它们实际上有点类似).
示例(在这里使用带有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;
  });
});
Run Code Online (Sandbox Code Playgroud)

测试环境是您运行测试的地方.

Karma是一个边缘案例,从某种意义上说它是一种一次性的工具,并不是很多人喜欢它.Karma的工作原理是在浏览器中运行单元测试(默认为PhantomJS,一个无头的WebKit浏览器),以允许您测试基于浏览器的JavaScript代码.

像Mocha和Jasmine这样的框架在浏览器和Node.js中都可以工作,并且通常默认为Node.

  • @Nader Karma使测试基于浏览器的JavaScript代码变得更加容易,否则你基本上无法在Node.js中运行测试.虽然Node很适合很多东西,但对于基于浏览器的代码来说效果并不好. (4认同)

Jef*_*rey 46

测试环境(或测试运行器)运行所有测试.它启动它们,汇总结果等.

测试框架是您用于创建每个测试的框架.例如,jasmine使用的语法

it('name of test', function() {
   // do some tests
});
Run Code Online (Sandbox Code Playgroud)

断言库是对测试结果的实际验证

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