我正在尝试使用Capybara + Rspec来测试Sinatra应用程序,我在将Capybara与Rspec集成时遇到了一些麻烦。这是我的spec_helper.rb
:
require './myapp'
require 'capybara/rspec'
Capybara.app = MyApp
然后,在我的app_spec.rb
中,我有:
require_relative 'spec_helper'
describe "My App", type: :request do
describe "get 'home'" do
it "should be successful" do
visit '/'
response.should be_successful
end
end
end
根据我能找到的所有文档,这应该可以正常工作。 。 。但是当我运行rspec spec
时,我得到了这个:
Failures:
1) Our App get 'home' should be successful
Failure/Error: response.should be_successful
NameError:
undefined local variable or method `response' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x007f8321289e60>
# ./spec/app_spec.rb:11:in `block (3 levels) in <top (required)>'
我已经做了一些挖掘,我可以通过将此方法抛入spec文件来解决问题:
def response
page.driver.browser.last_response
end
但那感觉很糟糕。
有更好的解决方案吗?我错过了什么?
答案 0 :(得分:4)
没有回应方法。我认为这只是在RSpec2 / Capybara的Rails插件中(不确定)。
只需使用last_response
代替response
:
last_response.should be_successful
你应该没事。
修改强>
好像你缺少一些测试方法。在spec_helper.rb
:
RSpec.configure do |conf|
conf.include Rack::Test::Methods
end
您之前需要rack/test
。