Вопрос

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

-FREW

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top