Ниже будут приведены аргументы в пользу выбора Mocha
-
Высокая популярность:
— 4m против 400k загузок в месяц -
Высокая активность:
— 1 890 против 1400 коммитов (всего)
— 171 против 101 коммитов (последний год)
— 1228 против 698 тасков
— 835 против 329 пул-реквестов
— 251 против 115 контрибьютеров -
Документацию
Jasmine
требуется изучать по исходным кодам?! -
Минимальное количество глобальных переменных
Mocha
describe
,xdescribe
,it
,xit
,before
,beforeEach
,after
,afterEach
Jasmine
context
,describe
,fdescribe
,xdescribe
,xit
,fit
,it
,jasmine
,expect
,not
,before
,beforeEach
,after
,afterEach
,afterAll
,beforeAll
,spyOn
,,waitsFor
runs
-
У
Jasmine
раздутый, но в тоже время ограниченный набор ассертовJasmine
expect(1).toBeGreaterThan(10)
Mocha + Chai
1.above(10);
На самом деле, Jasmine тоже можно заставить работать с Chai, но это будет оверхед.
Вопреки расхожему мнению,
Mocha
проигрываетJasmine
из-за отсутствия встроенных ассертов, однако это не совсем так. ВNode
есть стандартный модульassert
, который более чем полностью удовлетворяет базовые потребности:var assert = require('assert'); it('Execute a particular test case', function () { assert.equal(0, 1); });
-
Использование
Chai
может быть оправдано когда интерфейс построен на промисах:Mocha + WebdriverIO + Chai
it('Проверка портальной авторизации', function *() { yield browser .open('/user/login') .wait(() => { return browser.execute(() => { return window.__PH && window.__PH.activeUser(); }) .then(result => result.value); }) .expect.eventually.equal(object.user.email) });
*Jasmine + WebdriverIO*
```js
it('Проверка портальной авторизации', function () {
browser
.open('/user/login')
.wait(() => {
return browser.execute(() => {
return window.__PH && window.__PH.activeUser();
})
.then(result => result.value);
})
.then(function (result) {
expect(result).toBeEqual(object.user.email);
})
;
});
-
Mocha
поддерживаетGrowl
-нотификацию -
Mocha
производит временные замеры каждого теста и подсвечивает наиболее медленные -
Mocha
имеет собственный вотчер файлов -
Mocha
дает прекрасные возможности для отладки кода — дебаггер, профайлер и трейсер вызова функций -
Mocha
дает возможность прокинуть глобальные переменные -
Mocha
дает возможность конфигурировать время выполнения каждого теста -
Mocha
поддерживает три вида стандартных интерфейсов —bdd
,tdd
иexports
(Jasmine
реализует толькоbdd
-интерфейс) -
Mocha
прекрасно интегрируется со сторонними библиотеками типаSinon
иChai
(без оверхеда как вJasmine
) -
Mocha
показывает диффы! -
Mocha
позволяет перезапускать зафейленные тесты! -
Mocha
может запускать выборчно тесты (--grep) -
Mocha
имеет несколько репортеров (и куча сторонних, в т.ч. QUnit)! -
Стоит поверить а слово