0

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

1 回答 1

0

按照本教程的内容进行操作,而无需仔细检查,我相信您在关键字Gemfile上遇到了 Capybara 2.0 和 RSpec 之间的冲突。visit您有两个解决方案选项(不需要两者都做):

选项 1:将您的测试从spec/requests文件夹移到spec/features文件夹中。

或者

选项 2:使用关键字feature而不是describe.

此冲突是由本要点顶部的 Capybara 更改引起的(第二段):https ://gist.github.com/jnicklas/3980553 。引:

值得注意的是,我们将 Capybara 假设您的规范在 RSpec 中运行的 :type 更改为 :feature (以前是 :request)。规格/功能的最新版本。或者,您可以使用 Capybara Feature DSL(功能而不是描述),它应该可以在没有任何额外调整的情况下工作。如果您看到诸如未定义方法访问之类的错误,那么您可能遇到了这个问题。如果您将模块包含在 :request 规范中,您可能需要将其更改为 :feature。

于 2013-07-09T04:17:08.997 回答