RSpec - Введение

RSpec - это среда модульного тестирования для языка программирования Ruby. RSpec отличается от традиционных фреймворков xUnit, таких как JUnit, потому что RSpec - это инструмент разработки, управляемый поведением. Это означает, что тесты, написанные на RSpec, сосредоточены на «поведении» тестируемого приложения. RSpec делает упор не на том, как работает приложение, а на том, как оно ведет себя, другими словами, что приложение на самом деле делает.

Среда RSpec

Прежде всего, вам необходимо установить 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. Гем - это библиотека Ruby, которую вы можете использовать в своем собственном коде. Чтобы установить драгоценный камень, вам нужно использоватьgem команда.

Теперь давайте установим гем 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 использует термин «спецификация», который является сокращением от «спецификации».

Поскольку 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.