让我们来一些柴吧!

嗨,这不是在邀请您喝杯茶,这个柴不是一杯热的给你们😉!

那么,我们在这里说什么柴呢柴呢??? ..

该Chai是一个期望,有助于对javaScript代码执行各种断言。

如何开始使用它?

使用您喜欢的任何测试框架,Chai可用于node.js和浏览器。

对于node.js:npm install chai

建议使用*作为版本标记将其添加到package.json devDependencies中。 这将确保您在运行npm install之后始终拥有最新版本,当与持续集成工具配对时,该版本特别强大。

 "devDependencies": { 
"chai": "*",
"mocha": "*"
}, "//": "mocha is our preference, but you can use any test runner you like"

对于浏览器,请在您的测试套件中包含chai浏览器版本。

 </script 

Chai当前支持所有现代浏览器:IE 9 +,Chrome 7 +,FireFox 4 +,Safari 5+。

Chai API按样式或任务细分。

断言样式:

  • Expect / Should API涵盖了BDD断言样式。
  • Assert API涵盖了TDD断言样式。

BDD样式,Expect和应该使用相同的链来创建断言,但是它们在初始构造断言的方式上有所不同。

例如, Expect断言如下:

 var expect = require('chai').expect 
, foo
= 'drink'
, beverages
= { tea: [ 'chai', 'matcha', 'oolong' ] };
expect(foo).to.be.a('string');
expect(foo).to.equal('drink');
expect(foo).to.have.lengthOf(3);
expect(beverages).to.have.property('tea').
with .lengthOf(3);

对于Should,它将使用should属性扩展每个对象以启动链,并通过以下方式进行断言:

 var should = require('chai').should() //actually call the function , foo 
= 'drink'
, beverages
= { tea: [ 'chai', 'matcha', 'oolong' ] };
foo.should.be.a('string');
foo.should.equal('drink');
foo.should.have.lengthOf(3);
beverages.should.have.property('tea').
with .lengthOf(3);

两者之间有什么区别吗?

是的,他们不一样! expect require只是对expect函数的引用,而使用should require时,该函数正在执行。

expect接口提供了作为链接语言断言的起点的功能。

should接口扩展了Object.prototype以提供单个getter作为您的语言断言的起点。

目前仅此而已,赶快抓住大家吧! 🙂