RSpec — это модуль модульного тестирования для языка программирования Ruby. RSpec отличается от традиционных платформ xUnit, таких как JUnit, потому что RSpec — это инструмент разработки, управляемый поведением. Это означает, что тесты, написанные на RSpec, фокусируются на «поведении» тестируемого приложения. RSpec делает упор не на том, как работает приложение, а на том, как оно ведет себя, другими словами, на самом деле, что делает приложение.
RSpec Environment
Прежде всего, вам нужно будет установить Ruby на ваш компьютер. Однако, если вы еще этого не сделали ранее, вы можете скачать и установить Ruby с главного сайта Ruby — Ruby .
Если вы устанавливаете Ruby в Windows, у вас должен быть установщик Ruby для Windows здесь — http://www.rubyinstaller.org
Для этого урока вам понадобится только текстовый редактор, например Блокнот и консоль командной строки. Примеры здесь будут использовать cmd.exe на Windows.
Чтобы запустить cmd.exe, просто нажмите в меню «Пуск» и введите «cmd.exe», а затем нажмите клавишу «Return».
В командной строке в окне cmd.exe введите следующую команду, чтобы увидеть, какую версию Ruby вы используете:
ruby -v
Вы должны увидеть следующий вывод, который выглядит примерно так:
ruby 2.2.3p173 (2015-08-18 revision 51636) [x64-mingw32]
Примеры в этом руководстве будут использовать Ruby 2.2.3, но подойдет любая версия Ruby выше 2.0.0. Далее нам нужно установить гем RSpec для вашей установки Ruby. Gem — это библиотека Ruby, которую вы можете использовать в своем собственном коде. Чтобы установить драгоценный камень, вам нужно использовать команду драгоценного камня .
Давайте сейчас установим гем Rspec. Вернитесь в окно cmd.exe и введите следующее —
gem install rspec
У вас должен быть список установленных драгоценных камней, это камни, которые нужны для правильной работы rspec. В конце вывода вы должны увидеть что-то похожее на это —
Done installing documentation for diff-lcs, rspec-support, rspec-mocks, rspec-expectations, rspec-core, rspec after 22 seconds 6 gems installed
Не волнуйтесь, если ваш вывод не выглядит точно так же. Кроме того, если вы используете компьютер Mac или Linux, вам может потребоваться выполнить команду gem install rspec с помощью sudo или использовать такой инструмент, как HomeBrew или RVM, чтобы установить гем rspec.
Hello World
Для начала давайте создадим каталог (папку) для хранения наших файлов RSpec. В окне cmd.exe введите следующее —
cd \
Затем введите —
mkdir rspec_tutorial
И наконец, введите —
cd rspec_tutorial
Отсюда мы собираемся создать еще один каталог с именем spec, сделав это, набрав —
mkdir spec
Мы собираемся хранить наши файлы RSpec в этой папке. Файлы RSpec известны как «спецификации». Если вас это смущает, вы можете рассматривать файл спецификации как тестовый файл. RSpec использует термин «spec», который является краткой формой для «спецификации».
Поскольку RSpec — это инструмент тестирования BDD, цель состоит в том, чтобы сосредоточиться на том, что делает приложение, и соответствует ли оно спецификации. При разработке, основанной на поведении, спецификация часто описывается в терминах «пользовательской истории». RSpec разработан, чтобы прояснить, правильно ли работает целевой код, другими словами, следуя спецификации.
Вернемся к нашему коду Hello World. Откройте текстовый редактор и добавьте следующий код —
class HelloWorld def say_hello "Hello World!" end end describe HelloWorld do context “When testing the HelloWorld class” do it "should say 'Hello World' when we call the say_hello method" do hw = HelloWorld.new message = hw.say_hello expect(message).to eq "Hello World!" end end end
Затем сохраните его в файл с именем hello_world_spec.rb в папке spec, которую вы создали выше. Теперь вернитесь в окно cmd.exe и выполните эту команду:
rspec spec spec\hello_world_spec.rb
Когда команда завершится, вы должны увидеть вывод, который выглядит следующим образом:
Finished in 0.002 seconds (files took 0.11101 seconds to load) 1 example, 0 failures
Поздравляем, вы только что создали и запустили свой первый модульный тест RSpec!
В следующем разделе мы продолжим обсуждение синтаксиса файлов RSpec.