Почему я должен использовать RSpec или musta с Rails? - PullRequest
33 голосов
/ 21 сентября 2008

Я настраиваю приложение rails, и я только что закончил некоторые модульные тесты, и мой друг сказал, что, по-видимому, приборы больше не крутые, и люди теперь используют RSpec или musta. Мне было интересно, каковы реальные преимущества использования этих других наборов инструментов. Любая информация приветствуется.

-fREW

Ответы [ 8 ]

22 голосов
/ 21 сентября 2008

Я лично предпочитаю Ifa RSpec. Я считаю, что у Ifa магический синтаксис меньше, чем у RSpec. Моя проблема с RSpec заключается в том, что да, он очень читабелен, когда я читаю его вслух, но когда я приступаю к его написанию, хм, я никогда не уверен, как должно быть написано данное утверждение. Праг Дейв объясняет проблему лучше меня . Ему также нравится Мета , и у него есть несколько примеров.

17 голосов
/ 21 сентября 2008

RSpec и аналогичные среды представляют собой инструментальные средства, разработанные для помощи в разработке, управляемой поведением. Они не просто более симпатичный способ написания тестов, хотя они помогают с этим.

Здесь много информации о BDD: http://behaviour -driven.org / И википедия: http://en.wikipedia.org/wiki/Behavior_Driven_Development

Слишком много преимуществ, чтобы перечислять здесь, поэтому я бы порекомендовал просмотреть этот сайт немного.

7 голосов
/ 22 сентября 2008

Здесь есть две разные вещи:

Первое, что нужно использовать для написания тестов / спецификаций. Здесь вы можете выбрать между Test :: Unit, RSpec, Shoulda и так далее. Выбор заключается в том, хотите ли вы использовать традиционный TDD (Test :: Unit) или предпочитаете альтернативные способы мышления для определения поведения, отстаиваемые разработчиками, например David Chemlinsky (RSpec и в некоторой степени Следует).

Вторым моментом является обработка данных испытаний. Существуют светильники Rails и альтернативы, предназначенные для других целей, такие как плагин FixtureReplacement . До появления Rails 2.0 у светильников были значительные и хорошо документированные практические проблемы. Многие практические проблемы были исправлены в Rails 2.0. Однако крепления могут привести к непреднамеренному испытательному соединению, и некоторые альтернативы пытаются этого избежать.

4 голосов
/ 23 октября 2008

Ознакомьтесь с Джошем Сассером Великий Танцевальный отрывок для тестовых фреймворков для сравнения популярных фреймворков для Ruby.

4 голосов
/ 21 сентября 2008

RSpec намного мощнее, потому что гораздо проще как читать, так и писать тесты. Он также очень элегантен при использовании макетов и заглушек - концепция, которая станет чрезвычайно полезной, когда вы начнете использовать их в своих тестах. Попробуйте это в простом тестовом приложении (NON RAILS!), И вы увидите, насколько элегантны ваши характеристики по сравнению с эквивалентным стандартным тестированием.

2 голосов
/ 07 февраля 2011

Если вы создаете большое приложение и у вас нет команды, которая действительно хорошо умеет писать разъединенный код, который может быть хорошо протестирован с помощью тестов черного ящика и готов полностью охватить использование / отладку множества макетов и заглушек , не ходи по Фабричной дороге.

Где бы вы ни читали о том, как работают Awesome Factories. Вы увидите небольшое предостережение о том, что фабрики могут быть неосуществимы в больших приложениях, потому что они немного медленнее, чем приборы.

Но «немного медленнее» на самом деле на несколько порядков медленнее.

Фабрики не намного легче кодировать, чем устройства, использующие метки для идентификаторов, при условии, что они организованы. А в некоторых случаях фабрики сложнее отлаживать.

Только сегодня вечером я преобразовал одну фабрику в осветительные приборы, и время выполнения тестового файла, в котором он использовался, увеличилось с 65 до 15 секунд, хотя только около 15% тестов в этом тестовом файле используют эту фабрику.

Если вы используете minitest, вы можете запускать свои тесты в произвольном порядке; это быстро выявит любую связь данных между тестами. (не уверен, есть ли у rspec возможность рандомизировать порядок тестирования)

1 голос
/ 10 марта 2011

Test :: Unit подходит для небольших приложений. Но есть много преимуществ использования каркасов тестирования, таких как Shoulda или RSpec, e. г. контексты !!

Я не вижу Вуса и RSpec в отношениях "или-или-или". Я использую Следует в качестве замены RSpec, когда речь идет о тестировании с одним утверждением. Мне действительно нравятся однострочные тексты с Needa, но в RSpec гораздо проще писать сопоставления. Поэтому я советую использовать различные инструменты тестирования там, где они лучше всего подходят.

0 голосов
/ 11 января 2013

Вы можете использовать среду тестирования, такую ​​как Cucumber, которая даже быстрее, чем RSpec.

...