Ниже будут приведены аргументы в пользу выбора Mocha
-
Высокая популярность:
— 4m против 400k загузок в месяц -
Высокая активность:
— 1 890 против 1400 коммитов (всего)
— 171 против 101 коммитов (последний год)
— 1228 против 698 тасков
— 835 против 329 пул-реквестов
— 251 против 115 контрибьютеров -
Документацию
Jasmineтребуется изучать по исходным кодам?! -
Минимальное количество глобальных переменных
Mocha
describe,xdescribe,it,xit,before,beforeEach,after,afterEachJasmine
context,describe,fdescribe,xdescribe,xit,fit,it,jasmine,expect,not,before,beforeEach,after,afterEach,afterAll,beforeAll,spyOn,,waitsForruns -
У
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)! -
Стоит поверить а слово