我的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中包含了水豚?
如何知道访问正确的网址?如果我的网址是localhost:3030或localhost:8080怎么办?
我的宝石文件:
source 'http://rubygems.org'
gem "activerecord"
gem "rspec"
gem "capybara"
gem "activerecord-jdbcmysql-adapter"
我的spec_helper:
require 'capybara/rspec'
答案 0 :(得分:134)
关于rspec问题(https://github.com/rspec/rspec-rails/issues/360)
你应该把
config.include Capybara::DSL
在 spec_helper.rb 中,位于配置块内。
答案 1 :(得分:23)
Capybara::RSpec
现在查看的包含Capybara::DSL
和Capybara::RSpecMatchers
的默认目录已从requests
更改为features
。
将requests
目录重命名为features
后,我再次获得了匹配器和DSL方法,而无需明确包含它们。
请参阅以下commit
答案 2 :(得分:9)
还要确保您的测试位于 / spec / features 目录中。根据{{3}},在RSpec请求规范中默认不提供Capybara v2及更高版本。他们建议“......将任何使用水豚的测试从规格/要求转移到规格/功能。”
答案 3 :(得分:6)
默认情况下,如果文件位于spec / requests,spec / integration或示例组中有:type => :request
,则会自动包含capybara DSL。
因为你的文件在spec / home中,所以没有包括水豚帮手。您可以符合上述模式之一,也可以添加include Capybara::DSL
也可以执行操作(您可能还需要复制一些将要设置的before(:each)
内容。)
答案 4 :(得分:1)
如果你不成功,
将您的规范助手的末尾实际添加到RSpec.configure块之外
module ::RSpec::Core
class ExampleGroup
include Capybara::DSL
include Capybara::RSpecMatchers
end
end
答案 5 :(得分:-1)
1)添加到'rails_helper'配置:
config.include Capybara::DSL
config.include Capybara::RSpecMatchers
And comment out the `require 'spec_helper'` line.
2)添加到&#39; spec_helper&#39;:
require 'rails_helper'