Привет, это не приглашение к вам за чашкой чая, этот чай вам не подают горячим, ребята;)!

Итак, о каком чае мы говорим здесь ??? ..

Этот 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 src="chai.js" type="text/javascript"></script

В настоящее время Chai поддерживает все современные браузеры: IE 9+, Chrome 7+, FireFox 4+, Safari 5+.

API Chai разбивается по стилям или задачам.

Стили утверждения:

  • Expect / Should API охватывает стили утверждений BDD.
  • Assert API охватывает стиль утверждения TDD.

Стили BDD, Expect и Should используют одну и ту же цепочку для создания утверждений, но они различаются по способу первоначального построения утверждения.

Например, утверждение Ожидайте выглядит следующим образом:

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, чтобы начать вашу цепочку, и утверждение оформляется следующим образом:

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, предоставляя единственный получатель в качестве отправной точки для утверждений вашего языка.

На этом пока все, поскорее вас всех поймаю! :)