Привет, это не приглашение к вам за чашкой чая, этот чай вам не подают горячим, ребята;)!
Итак, о каком чае мы говорим здесь ??? ..
Этот 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
, предоставляя единственный получатель в качестве отправной точки для утверждений вашего языка.
На этом пока все, поскорее вас всех поймаю! :)