Объединять фильтры RSpec? - PullRequest
7 голосов
/ 29 ноября 2011

Я просматривал документы, но описания того, как работают несколько фильтров, похоже, немного не хватает. У кого-нибудь есть хорошее объяснение или источник хорошего объяснения поведения нескольких фильтров? Имеет ли значение порядок их перечисления? Вот пример кода, поведение которого может отличаться от ожидаемого ...

Rspec.configure do |c|
  this_version = get_version_number.to_sym
  c.filter_run :focus=> true
  c.filter_run_excluding :limit_to=>true, this_version => false
  c.filter_run :new_stuff=>true
  c.run_all_when_everything_filtered
end

it "is focused, but not new", :focus
it "is is new", :new_stuff
it "is new and focused", :new_stuff, :focus
it "is focused and new, but limited to a different version", :focus, :limit_to, :correct_version

Поэкспериментируя с этим, также кажется, что множественные аргументы в строке «filter_run_excключение» - это простое действие, если вы написали строку несколько раз. Есть ли способ заставить его на самом деле объединить проверки фильтра, чтобы исключить (или запустить, я полагаю) только те примеры, в которых есть оба тега?

1 Ответ

3 голосов
/ 02 февраля 2012

Запуск нескольких фильтров из командной строки с помощью:

rspec spec --tag my_tag --tag my_second_tag -- tag ~my_third_tag

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

rspec spec --tag ~long_runing
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...