Теги и перехватчики в Cucumber и в Rspec
Петрунин Максим, 20 ноября 2010 года
Теги – замечательный инструмент для упорядочивая сценариев Cucumber’а (или примеров Rspec’а). Вы можете давать теги всему. Вы можете метить долговыполняющиеся сценарии (примеры) тегом slow, и не запускать их в команде по-умолчанию. Вы можете, в случае с кукумбером, метить сценарии (или, кстати, целиком фичу) тегом @javascript, и они будут выполнятся с использованием текущего javascript-драйвера (кстати, эта возможность доступна из коробки).
Но самое часто-используемое – это специальная метка для того, над чем вы работаете именно сейчас. В кукумбер она доступна по-умолчанию и зовётся @wip. Там даже преднастроен специальный профиль, который переключает форматирование на более удобное и запускает только @wip-сценарии:
cucumber -p wip
Впрочем, если вам хочется только фильтровать теги, то можно воспользоваться ключём --tags
: cucumber --tags wip
. Пометь сценарий тегом wip можно следующим образом
@wip
Scenario: my scenario
Given ...
Подробнее о тегах в кукумбере можно прочесть в официальной вики.
Отличным дополнение к тегам в кукумбере является возможность создавать перехватчики (hooks). Можно перехватить что угодно, но нас интересует возможность перехватить выполнение сценария с определённым тегом.
Скажем, мы хотим, чтобы у сценариев с тегом @lvh-js параметр Capybara.app_host
менялся на http://lvh.me:9887 (lvh.me, а также все его поддомены, ссылаются 127.0.0.1), и включался драйвер selenium. Сделать это очень просто. Для этого создаём файл features/support/lvh-js-tag.rb
, и пишем туда следующее:
Before('@lvh-js') do
Capybara.app_host = "http://lvh.me:9887"
Capybara.current_driver = :selenium
end
Готово. Подробнее о перехватчиках также можно прочесть в официальной вики.
Что касается rspec’а, то там теги задаются чуть иначе. Теги могут быть представлены как строка, например, wip
и как пара ключ-значение, например, speed:slow
. Для того, что б пометь it\describe\context.. обычным тегом, надо добавить в в конце вызова :wip => true
, если же хочется пометить парой ключ-значение, то :speed => :slow
. Например:
it "my current example", :wip => true do
...
end
Теперь можно запустить на выполнение примеры только с тегом wip: rspec --tag wip
.
Челимский, что кстати очень разумно, переносит документации в фичи кукумбера, поэтому подробнее о тегах в rspec можно прочесть в официальной фиче.
2 комментария [написать ещё один]
I am regular reader, how are you everybody? This post posted at this
web page is really pleasant.
It’s the best time to make a few plans for the future and
it is time to be happy. I have read this post and if I
could I desire to recommend you few fascinating things or advice.
Perhaps you could write next articles regarding this article.
I desire to learn even more issues approximately it!