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