在我的rspec中找不到访问方法

我的Java Web应用程序运行在tomcat的http:// localhost:8080 /

写我的第一个规范,home_spec:

require 'spec_helper' describe "home" do it "should render the home page" do visit "/" page.should have_content("hello world") end end 

并运行:

 rspec 

我得到:

 F Failures: 1) home should render the home page Failure/Error: visit "/" NoMethodError: undefined method `visit' for #<RSpec::Core::ExampleGroup::Nested_1:0x242870b7> # ./spec/home/home_spec.rb:7:in `(root)' Finished in 0.012 seconds 1 example, 1 failure Failed examples: rspec ./spec/home/home_spec.rb:6 # home should render the home page 

不应该这样做,因为我已经在spec_helper中包含了水豚?

如何知道访问正确的url? 如果我的url是localhost:3030或localhost:8080,该怎么办?

我的gemfile:

 source 'http://rubygems.org' gem "activerecord" gem "rspec" gem "capybara" gem "activerecord-jdbcmysql-adapter" 

我的spec_helper:

 require 'capybara/rspec' 

关于rspec的问题( https://github.com/rspec/rspec-rails/issues/360

你应该放

 config.include Capybara::DSL 

spec_helper.rb中 ,在configuration块内。

Capybara::RSpec现在将默认的目录包括Capybara::RSpecMatchers Capybara::DSLCapybara::RSpecMatchersrequests改为features

将我的requests目录重命名为features我再次获得了匹配器和DSL方法,而无需明确地包含它们。

看到下面的提交

还要确保你的testing在/ spec / features目录下。 根据rspec-rails和capybara 2.0 ,默认情况下,RSpec请求规格不会提供Capybara v2和更高版本。 他们build议“……将任何使用水豚的testing转换为规格/特性。”

默认情况下,如果文件在spec / requests,spec / integration中,或者如果示例组具有:type => :request ,则自动包含capybara DSL。

因为你的文件在spec / home中,所以水豚帮助者没有被包括在内。 你可以符合上面的模式之一,或者添加include Capybara::DSL也应该做的伎俩(你可能还需要复制一些before(:each)将被设置的东西。

首先检查出来

如果你不成功,

将此代码添加到您的spec帮助程序的实际结束的RSpec.configure块中

 module ::RSpec::Core class ExampleGroup include Capybara::DSL include Capybara::RSpecMatchers end end 

1)添加到“rails_helper”configuration:

 config.include Capybara::DSL config.include Capybara::RSpecMatchers And comment out the `require 'spec_helper'` line. 

2)添加到“spec_helper”:

 require 'rails_helper'