在JavaScript中断言库,测试框架和测试环境有什么区别?

在JavaScript中断言库,测试框架和测试环境有什么区别?

问题描述:

Chai是一个断言库。在JavaScript中断言库,测试框架和测试环境有什么区别?

MochaJasmine是测试框架。

and Karma是一个测试环境。

我已阅读Difference between available testing frameworks: mocha, chai, karma, jasmine, should.js etc

+0

为了使事情更加复杂,还有[Selenium Webdriver Node.JS客户端](http://www.slant.co/topics/2814/viewpoints/2/~what-are-the-best-node -js-selenium-webdriver-client-libraries-bindings),其中一些可以让你运行Jasmine,Cucumber或Moca + Chai测试(例如WebdriverIO)。 – 2015-08-03 09:03:00

+1

由于OP给出了他们想要澄清的3件事的例子,所以这个问题写得不好,他们甚至给出了更多信息的链接。它几乎是自己对问题标题的回答。然而,我假设,鉴于提供的信息,OP想要更详细的分类。但是,这将有助于了解OP中哪些部分仍不清楚。 – redfox05 2016-08-05 18:04:59

断言库工具,用于验证的事情是正确的。
这使得测试代码变得容易很多,因此您不必执行数千个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摩卡这里):

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通过在浏览器中运行你的单元测试(默认为PhantomJS,一个无头WebKit浏览器),让你测试基于浏览器的JavaScript代码。

像Mocha和Jasmine这样的框架既可以在浏览器中使用,也可以在Node.js中使用,通常默认为Node。

+0

对不起,我还没弄明白。测试框架和测试运行器都可以运行我的测试。为什么我们需要业力? – Nader 2014-09-05 03:38:57

+3

@Nader Karma使测试基于浏览器的JavaScript代码变得更容易,否则基本上你会在Node.js中运行测试。虽然Node对很多事情都很好,但对基于浏览器的代码来说效果不佳。 – 2014-09-05 03:42:21

+0

我喜欢你在香草JS中断言的例子。值得强调的是,你可以在没有断言库的情况下编写单元测试。 Assertion库像[should.js](https://shouldjs.github.io/),[ChaiJS](http://chaijs.com/)或[Node.js Assert](https://nodejs.org /api/assert.html)仅仅是[语法糖](https://en.wikipedia.org/wiki/Syntactic_sugar),因为它们允许您使用自然语言语法编写断言,从而提供更多的人类可读测试。 – gfullam 2016-09-07 12:59:39

测试环境(或测试运行器)是运行所有测试的东西。它启动它们,汇总结果等。

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

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

非常好的解释:)值得更多的积分。 – 2016-05-11 17:00:33

+0

请注意,测试框架也可以汇总结果。例如。摩卡有几个不同的记者。 – 2016-11-22 18:32:41