тонкая настройка rspec перед - PullRequest
       0

тонкая настройка rspec перед

1 голос
/ 28 сентября 2011

В Rspec мы можем настроить некоторое глобальное поведение до / после так:

config.before(:each) {blah...}

Я могу сказать:

config.before(:each, :type => :model) {blah...}

Чтобы этот блок работал только с тестами моделей Но это не сработает:

config.before(:each, :type => [:model, :controller]) {blah...}

Я должен повторить одно и то же дважды, один для модели и один для контроллера. Есть ли другой способ сделать это? Спасибо

1 Ответ

6 голосов
/ 09 февраля 2012

Просмотр фильтров RSpec: https://www.relishapp.com/rspec/rspec-core/docs/hooks/filters

Они просто соответствуют любым произвольным метаданным, и rspec-rails добавляет метаданные: type =>: model (или что-то еще) к каждому набору тестов.

Итак, этот конфиг

config.before(:each, :type => [:model, :controller]) {blah...}

будет соответствовать только тестам с этими метаданными (совпадающими с тем же значением):

describe "matching tests", :type => [:model, :controller] {blah...}

Что в основном означает ответ на ваш вопрос НЕТ .

Во всяком случае, вы можете легко сделать это с помощью чего-то вроде этого:

before_controller_and_model = lambda do
  do_stuff
end

config.before(:each, :type => :model)      { before_controller_and_model.call }
config.before(:each, :type => :controller) { before_controller_and_model.call }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...