Пропустить тестовый пример RSpec во время выполнения - PullRequest
13 голосов
/ 24 марта 2011

Я провожу тесты RSpec на продукт веб-сайта, который существует на нескольких разных рынках.У каждого рынка есть несколько различных комбинаций функций и т. Д. Я хотел бы иметь возможность писать тесты так, чтобы они пропускали себя во время выполнения в зависимости от того, с каким рынком / средой они работают.Тесты не должны проваливаться при запуске на другом рынке и не должны проходить - они просто не применимы.

К сожалению, не представляется простым способ пометить тест как пропущенный.Как бы я поступил так, не вставляя «ожидающие» блоки (которые в любом случае не точны?)

1 Ответ

18 голосов
/ 25 марта 2011

Использовать фильтры исключения .

describe "market a", :market => 'a' do
   ...
end
describe "market b", :market => 'b' do
   ...
end
describe "market c", :market => 'c' do
   ...
end

RSpec.configure do |c|
  # Set these up programmatically; 
  # I'm not sure how you're defining which market is 'active'
  c.filter_run_excluding :market => 'a'
  c.filter_run_excluding :market => 'b'
  # Now only tests with ":market => 'c'" will run.
end

Или, что еще лучше, используйте неявные фильтры .

describe "market a", :if => CurrentMarket.a? do # or whatever
   ...
end
...