Подтвердить что ты не робот

Должен ли я использовать RSpec или огурец

Я новичок в тестировании unit/func в Rails 3. Поэтому я начинаю сейчас, лучше поздно, чем никогда.

У меня есть метод в /lib/mailingjob.rb, называемый find_reply (body)

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

Я нахожу, когда нужно использовать RPSEC против огурца.

Спасибо

4b9b3361

Ответ 1

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

Я очень советую вам взглянуть на огурец railscast от railscasts.com. Кроме того, убедитесь, что вы используете webrat и, возможно, что-то, чтобы автоматически загружать ваши спецификации, такие как watchr (что я предпочитаю).

Ответ 2

Я бы посоветовал никогда не использовать огурец, если вы специально не наняты в качестве бизнес-аналитика. Это делает вашу жизнь намного проще: все ваши тесты будут в Rspec.

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

Ответ 3

Если у меня еще не было учетной записи, я бы сделал JUST, чтобы написать это сообщение. Я призываю перечитывать @Jack Kinsella ответ

Я попал в BDD около 3 месяцев назад, влюбился в него и быстро начал использовать Cucumber для всего. Я принуждал его к каждому проекту, независимо от того, что

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

Честно говоря, их содержание не так важно; что важно, что они намекали на общую идею. Я начал подозревать, что я все время использовал Огурцы, и я отправился на поиски ответов. Сегодня утром я нашел ваш вопрос SO и сообщение @Jack Kinsella в блоге


@Jack приходит прямо и говорит, что идея I считает, что эти статьи ориентировочно кружатся. Он также дает мне тот язык, который я искал. Теперь я считаю его статью окончательным словом по этому вопросу:)

По его словам, то, что мы НАСТОЯТЕЛЬНО используем Cucumber for, является "интеграционным тестированием". Я никогда не понимал, что это значит перед

Тестирование устройств:
    Как работает код внутри. Math.Add(1,1) должно быть 2, но пользователю веб-сайта все равно. Просто дайте мне веб-страницу!
    - > Использовать RSpec или эквивалентный

Интеграционное тестирование:
    Как разные ветки кода работают вместе, чтобы сделать сайт. Я набираю свое имя и нажимаю "Вход в систему" ​​и должен быть доставлен на главную страницу
    - > ТАКЖЕ использовать RSpec!
    (Внутри RSpec добавьте все, что вам нужно, чтобы обращаться с несколькими технологиями, касающимися друг друга. Например, пример кода для веб-браузера: Capybara, Watir и т.д.)

Приемочные испытания:
    Многие из нас не нуждаются в этом. Кто-то подписал с вами контракт: "Я собираюсь написать" Я могу добавить подстраницы на мой микросайт ". в текстовом файле". Вы пишете мне код, который превращает его в зеленый цвет
    - > Используйте огурец. Только если вам нужно провести такое тестирование. Что вы почти наверняка не делаете

Какое изящное решение. Нет второй среды тестирования. Нет шагов каталога и рой дополнительных файлов!

У меня был момент: "Но мне нравится, как огурец отделяет английский от кода". Регулярный bdd делает это тоже. "rspec --format nested" или Результаты теста Жасмина

@Jack прав. Огурец ничего не добавляет; не так, как мы его использовали. И это очень дорого. Процитировать его:

Почему бы вам не признать, что вы не принимаете приемочные испытания и что вам не нужно это в ваших проектах? Swap Cucumber для чистых интеграционных тестов с использованием Capybara, и вы будете удивлены тем, насколько продуктивнее вы быть

Ответ 4

Чтобы завершить ответ SpyrosP, есть замечательная запись в блоге от Сары Мэй, в которой описывается сценарий, в котором вы используете как Rspec, так и Cucumber. Он называется oustide-in Behavior Driven Development и вы можете найти его здесь.

Ответ 5

Однако, я думаю, что большая часть проблемы Джека может быть решена хорошим редактором огурцов. Поэтому проблема не в огурцах. Проблема в том, что не было подходящего редактора, когда он писал это два года назад. Но сегодня RubyMine обладает возможностью полного редактирования огурца. Хотя он не является бесплатным, он может решить большую часть проблемы Джека: автозаполнение, указание ошибок, рефакторинг. Поэтому вы, вероятно, захотите вернуться и проверить поднятые очки и посмотреть, действительно ли они действительны сегодня.

Ответ 6

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

Со временем вы обнаружите, что необходимы два больших тестирования:

  • Является ли мой код еще работающим?
  • Могут ли мои пользователи выполнять уже выполненные действия?

Как разработчик, я склонен думать, что (1) для каждого изменения кода и (2), когда я заканчиваю функцию и/или развертываю.

Наличие двух наборов тестов хорошо, потому что во время развертывания вы можете сидеть и запускать очень общий набор тестов: работают ли мои функции пользователя? Можно ли, наконец, развернуть это?

Действительно, должно быть настолько общим, что если что-то ломается (2), вам нужно провести какое-то тяжелое исследование (одна строка отсутствует в ваших таблицах), в то время как сбой в (1) должен указывать точный класс с проблемой.

Обычно я нахожусь в ситуации, когда мне нужна отдельная интеграция + приемочное тестирование без бремени огурца. Сначала я использую теги RSpec для фильтрации этих тестов. Всякий раз, когда мне нужно больше, мне нравится ходить в Steak + Capybara, поскольку он позволяет огурцам как цели на вершине чего-то, что я уже знаю достаточно хорошо.

Ответ 7

Определенно используйте оба. Используйте огурец для тестов пользовательского опыта (views), используйте rspec для тестирования внутренних элементов (моделей и т.д.). Вы можете написать тесты rspec контроллера, но я думаю, что они не нужны (попробуйте переместить логику в модели). Независимо от вашей системы, я настоятельно рекомендую вам использовать Cucumber, потому что сценарии позволят вам и вашим заинтересованным сторонам четко знать функции вашей системы. У вас также будет готовая документация, и вы всегда будете знать, где вы находитесь и куда направляетесь. Вы также расскажете о сценариях, связанных с поддержкой, в будущем. Кекс их, кстати, не использует переменные в сценариях, они должны быть понятны. И если вы хотите, чтобы они работали быстро, так как rspecs использует poltergeist (phantomjs).

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