2

Capybara 2 删除了这些并建议将它们分开,但在某些情况下,我们希望在测试中同时使用两者(通过视图启用 api 键,然后点击 api 等)。

我尝试包括include ::Rack::Test::Methods但我得到:

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

3 回答 3

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
于 2014-03-09T20:11:13.933 回答
0

尝试这个

def app
  Rails.application
end
于 2015-02-02T16:02:17.537 回答
0

对于其他任何人都将头撞到墙上,得到“NameError:未定义的局部变量或方法‘app’”错误。当您一次运行所有测试(多个文件)并且其中一个执行include Rack::Test::Methods- 包含“感染”其他测试时,也会发生这种情况。所以症状是当文件单独运行时所有测试都通过了,但是当它们一起运行时它们会失败并出现“无应用程序”错误。至少这发生在rails 3.0.9rspec 3.0

此问题的解决方案是删除includes. 或者,您可以尝试类似@ultrasaurus 的答案,以确保仅将包含正确包含在需要它的示例中。

于 2021-12-26T15:12:15.247 回答