即使条件满足,rspec也会显示失败

时间:2013-07-09 03:08:35

标签: ruby-on-rails rspec

我正在使用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

1 个答案:

答案 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。