我正在使用rspec来验证页面中是否存在字符串。我是rails的新手并遵循教程http://ruby.railstutorial.org/chapters/static-pages#top 有什么我想念的吗?
require 'spec_helper'
describe "Static pages" do
describe "Home page" do
it "should have the content 'Sample App'" do
visit '/static_pages/home'
page.should have_content('Sample App')
end
end
end
在我的主页app / views / static_pages / home.html.erb中,我有以下代码。
<h1>Sample App</h1>
命令我用来验证条件。
bundle exec rspec spec/requests/static_pages_spec.rb
测试失败不知道为什么。
←[31mF←[0m
Failures:
1) Static pages Home page should have the content 'Sample App'
←[31mFailure/Error:←[0m ←[31mvisit '/static_pages/home'←[0m
←[31mNoMethodError←[0m:
←[31mundefined method `visit' for #<RSpec::Core::ExampleGroup::Nested_1::
Nested_1:0x4067a60>←[0m
←[36m # ./spec/requests/static_pages_spec.rb:8:in `block (3 levels) in <top(required)>'←[0m
Finished in 0.023 seconds
←[31m1 example, 1 failure←[0m
Failed examples:
←[31mrspec ./spec/requests/static_pages_spec.rb:7←[0m ←[36m# Static pages Home page should have the content 'Sample App'←[0m
Randomized with seed 44188
答案 0 :(得分:0)
根据教程的内容,如果没有Gemfile
进行仔细检查,我相信您在visit
关键字上遇到了Capybara 2.0和RSpec之间的冲突。解决方案有两种选择(不需要同时执行):
选项1:将您的测试从spec/requests
文件夹移至spec/features
文件夹。
或
选项2:使用关键字feature
代替describe
。
这种冲突是由于在这个要点(第二段)的顶部注意到Capybara的变化引起的:https://gist.github.com/jnicklas/3980553。引用:
值得注意的是,我们改变了:Capybara假设您的规格在RSpec中运行的类型:功能(以前是:请求)。最新版本的规格/功能。或者你可以使用Capybara Feature DSL(功能而不是描述),它可以在没有任何额外调整的情况下工作。如果您看到未定义方法访问等错误,那么您可能遇到此问题。如果您将模块包含在:request specs中,您可能需要将其更改为:feature。