я могу использовать несколько фильтров исключения в rspec? - PullRequest
3 голосов
/ 12 апреля 2011

В файле _spec.rb я настраиваю фильтр исключения примерно так:

RSpec.configure do |config|
  # we need determine this once at the very front
  # and the result be available in the instance
  server_success = server1_available?

  config.exclusion_filter = {
    :svr1 => lambda {|what|
      case what
      when :available
        !server_success
      end
    }
  }
end

, а потом в файле я делаю

describe :get_items_by_client, :svr1 => :available do

для предотвращения выполнения теста, если сервер недоступен.

Это все работает нормально, если я запускаю один файл спецификации. Тем не менее, у меня есть подобный код в другом файле, управляющий тестами, которые обращаются к другому серверу, и когда я запускаю их все только, я вижу, что каждая из проверок сервера выполнена (у меня есть путы в коде «serverX_available?»), Но только исключается один набор тестов (хотя ни один из серверов не доступен).

Я начинаю думать, что у вас может быть только один фильтр исключения, но я могу найти любые документы в любом месте, которые говорят об этом. Это выполнимо для каждого файла? Я мог бы иметь один сложный фильтр в файле поддержки, но как мне включить его, когда я выполняю всего лишь один файл спецификации?

В идеале, я хотел бы найти форму, которая работает для каждого файла, но позвольте мне сделать проверку доступности один раз, так как это довольно дорогая проверка, и у меня есть несколько примеров в тесте, которые контролируются этим.

1 Ответ

0 голосов
/ 05 октября 2013
config.filter_run_excluding :cost => true
config.filter_run_excluding :slow => true

Попробуйте, и это работает.

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