Есть ли простой способ включить методы RackTest в тесты Capybara?

Capybara 2 удалила их и предлагает разделить их, но у нас есть некоторые ситуации, когда мы хотели бы использовать оба в тесте (включение ключа api в представлении, затем нажатие на api и т. Д.).

Я пытался в том числе include ::Rack::Test::Methods но я получаю:

undefined local variable or method `app' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x007fb737932ba0>

3 ответа

Я столкнулся с той же ошибкой, используя Rails и RSpec для тестирования API. Я нашел полезную запись в блоге для Rails 2.3: http://eddorre.com/posts/using-rack-test-and-rspec-to-test-a-restful-api-in-rails-23x

module ApiHelper
  require 'rack/test'
  include Rack::Test::Methods

  def app
    ActionController::Dispatcher.new
  end
end

Мое решение для Rails 3.2 было (посмотрите на config.ru для MyAppName):

module ApiHelper
  require 'rack/test'
  include Rack::Test::Methods

  def app
    MyAppName::Application
  end
end

Попробуй это

def app
  Rails.application
end

Для всех, кто бьется головой о стену, получая ошибку «NameError: undefined local variable or method `app’». Это также происходит, когда вы запускаете все свои тесты одновременно (несколько файлов), и один из них выполняет include Rack::Test::Methods- включение "заражает" другие тесты. Таким образом, симптом заключается в том, что все тесты проходят, когда файлы запускаются по отдельности, но затем они терпят неудачу с ошибкой «нет приложения» при совместном запуске. По крайней мере, это происходит с rails 3.0.9а также rspec 3.0

Решение этой проблемы заключается в удалении includes. В качестве альтернативы вы можете попробовать что-то вроде ответа @ultrasaurus, чтобы убедиться, что включения правильно содержатся только в тех примерах, которые в этом нуждаются.

Другие вопросы по тегам