在我的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::DSL
和Capybara::RSpecMatchers
从requests
改为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'