Jasmine vs. Mocha JavaScript для Rails 3.1+

У меня есть опыт работы с Jasmine и мне это нравится совсем немного. Кто-нибудь имеет опыт работы с Jasmine и Mocha, особенно для Rails? Мне интересно, стоит ли переходить на него.

Ответ 1

Я тестировал как жасмин, так и мокко. Во-первых, переключение относительно просто. Базовый шаблон describe и it BDD идентичен. Вам нужно будет изменить, как вы делаете свои утверждения, и переключиться на другой интерфейс для асинхронных тестов. В целом они сопоставимы.

Асинхронный интерфейс Mocha намного проще и более согласован. Тесты и настройки могут быть либо синхронными, либо асинхронными, что отлично. Это, плюс тот факт, что TJ Holowaychuck является поэтом эпоса, является веским поводом попробовать Mocha.

Я действительно думаю, что Jasmine matchers легче читать и более элегантно, особенно в сочетании с плагином jasmine-jquery. Mocha обычно сопрягается с отдельной библиотекой для утверждений, часто chai.js, если вы выполняете в браузере тестирование или should.js для node - только тестирование. Я доволен интерфейсом chai assert.equal(), но стиль Jasmine expect($("#central_errors").html()).toContain("must provide a name"); кажется мне более изящным. Я не являюсь поклонником интерфейса стиля chai.js expect(42).to.be.above(41) с предложениями с разделителями-точками, потому что он не работает хорошо.

В конечном счете, это вопрос личных предпочтений, и я настоятельно рекомендую вам просто провести день или около того, написав тесты Mocha вместо Jasmine и посмотреть, как он себя чувствует. Полностью выгодные инвестиции, даже если вы решите придерживаться Жасмина, вы будете делать это с места из первых рук и узнаете о других способах решения некоторых проблем, которые решает Жасмин. Я попробовал это, и я придерживаюсь Mocha отчасти потому, что ставка на TJ - хорошая ставка, но Жасмин также является зрелой, солидной и широко принятой библиотекой.

Ответ 2

Посмотрите проект Teabag на github. Он специально позволяет использовать конвейер активов вместе с Mocha, Jasmine или QUnit.

https://github.com/modeset/teaspoon

Mocha - довольно большая библиотека, но я обычно использую Jasmine - для меня это в первую очередь о знаниях и опыте работы с Jasmine, но у Mocha есть некоторые действительно интересные функции - например, давая вам знать, когда вы истекаете кровью в глобальную сферу.

Подумал, что стоит упомянуть проект, потому что он специально позволяет вам играть с обоими (в разных сюитах), чтобы вы могли сами решить.