Почему мне следует использовать RSpec или shoulda с Rails?

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

-FREW


person Frew Schmidt    schedule 21.09.2008    source источник


Ответы (8)


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

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

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

person Aaron Jensen    schedule 21.09.2008

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

person webmat    schedule 21.09.2008
comment
Полностью согласен с webmat. Мне действительно сложно понять синтаксис RSpec, потому что он содержит так много синтаксического сахара. Он превращает обычные фразы в код, но затем вы понимаете, что он должен делать! Кривая крутая, и я ленив. - person srboisvert; 22.09.2008
comment
Раньше я тоже немного подозрительно относился к приторному синтаксису, но после прочтения rdoc.info/gems/rspec-expectations/2.4.0/RSpec/Matchers У меня действительно нет проблем с написанием своих утверждений с использованием синтаксиса RSpec. (Возможно, документация просто улучшилась в течение 2,5 лет с момента вашего ответа. ^^) На самом деле, мне теперь гораздо больше нравятся ожидания RSpec, чем утверждения Test :: Unit (и это все еще совершенно не заботится о читабельности на английском языке (неверно) особенность). - person Jo Liss; 03.02.2011

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

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

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

person domgblackwell    schedule 22.09.2008

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

person Loren Segal    schedule 21.09.2008

Посмотрите The Great Test Framework Dance- off для сравнения популярных фреймворков для тестирования Ruby.

person Mike Breen    schedule 23.10.2008

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

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

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

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

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

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

person Michael Johnston    schedule 07.02.2011

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

Я не считаю Shoulda и RSpec отношениями «либо-либо». Я использую Shoulda вместо RSpec, когда дело доходит до тестирования с одним утверждением. Мне очень нравятся однострочники Shoulda, но в RSpec писать сопоставители намного проще. Поэтому я советую использовать разные инструменты тестирования там, где они лучше всего подходят.

person rufus    schedule 10.03.2011

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

person Priyanka    schedule 11.01.2013