Пропустить тест RSpec во время выполнения
Я запускаю тесты RSpec против продукта веб-сайта, который существует на нескольких разных рынках. На каждом рынке есть тонко разные комбинации функций и т.д. Я бы хотел написать тесты, чтобы они пропускали себя во время выполнения в зависимости от того, на каком рынке/среде они работают. Тесты не должны терпеть неудачу при запуске на другом рынке и не должны проходить - они просто неприменимы.
К сожалению, кажется, что нет простого способа пометить тест как пропущенный. Как бы я это сделал, не пытаясь вставить "ожидающие" блоки (которые в любом случае не точны?)
Ответы
Ответ 1
Используйте фильтры .
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