Основы тестирования Ruby с помощью RSpec
Сейчас вы уже имеете некоторый опыт написания реальных программ на Ruby. Возможно, вы проверяли, как они работают вручную путем ввода некоторых тестовых данных в командной строке снова и снова. Скорее всего такой способ тестирования программ вас особенно расстраивал при работе над сложными проектами из прошлого урока по алгоритмам и стуктурам данных.
Как вы, вероятно, помните из курса "Основы веб-разработки", тестирование с помощью RSpec может автоматизировать большинство таких операций. Он также позволяет убедиться, что интерфейс вашей программы функционирует должным образом. Тестирование позволяет быть уверенным в своем коде, не беспокоиться о том, что после изменения кода программа будет вести себя не так как задумано, так как если что-то в программе поломается, вы будете сразу знать, что именно сломалось и почему. Если в конечном итоге вы будете отправлять код в публичный проект, то вам будет необходимо включать тесты, для проверки функционала, который вы добавили.
На самом базовом уровне RSpec является "Domain Specific Language" (DSL, то есть язык, который предназначенный для какой-то конкретной области), написанным на Ruby и предназначенным для тестирования приложений на Ruby. Вы можете использовать его, включив в проект гем rspec, который является пакетом, содержащим три гема - rspec-core, rspec-expectations и rspec-mocks. Он настроен так, что при включении гема в проект, вы можете запустить тесты из командной строки. Если вы полностью выполнили проект из курса "Основы веб-разработки", то вы уже знакомы с ним.
Мы более подробно рассмотрим тестирование в курсе Rails, но лучше будет сначала получить хорошую базу в тестированиее "старого доброго" Ruby. Тестирование поможет также в финальном проекте, иначе вы обнаружите, что без конца вводите вручную тестовые данные и не вылезаете из отладчика.
Найти хорошие бесплатные ресурсы по тестированию очень сложно. Есть несколько приличных платных ресурсов (они перечислены в разделе "Дополнительные ресурсы" ниже), но те бесплатные которые есть, очень рассеяны. Самый удобный способ изучения, вероятно, будет такой - зная, что вы хотите сделать, гуглить как это протестировать, или найти туториал, в котором делается что-то похожее.
Пункты для размышления
Посмотрите эти пункты сейчас, а затем с их помощью проверьте себя после выполнения задания.
- Как запустить пакет тестов RSpec?
- Как написать базовый RSpec тест?
- Что стоит тестировать в ваших методах?
- Что такое стаб (stub)?
- Что такое мок (mock)?
- Что такое дабл (double)?
- Чем они отличаются друг от друга?
- Когда стоит их использовать?
Ваше задание
- Вернитесь в курс "Основы веб-разработки" и выполните задание в секции про тестирование, если вы не сделали того ранее.
- Посмотрие видео по написанию некоторых тестов для небольшого куска кода в стиле Test-Driven Development (TDD).
- Прочтите статью в блоге Treehouse для более формального понимание основ тестирования.
- Взгляните на официальную документацию по RSpec от Relish. Она вам сильно поможет, когда чуть позже вы будете теряться в догадках, не понимая, что же происходит.
- Просмотрите Better Specs, который показывает множество примеров того, что стоит и что не стоит делать с RSpec.
- (Необязательно!) Туториал по RSpec от TutsPlus даст вам другой пример написания тестов.
Дополнительные ресуры
Здесь содержатся полезные ссылки на другие ресурсы. Материал необязателен для изучения, но весьма полезен если вы хотите углубиться в какую-либо тему
- Уроки RSpec от Peep Code они небесплатные, но хороши для того чтобы сделать шаг вперед к углубленному пониманию тестов.
- Книга о RSpec - главная книга о RSpec
- шпаргалка RSpec поможет вам не лазить лишний раз в Гугл в поисках синтаксиса
- Прочтите статью на википедии про TDD если вы до сих пор не очень хорошо понимаете что это такое.