6

我正在关注http://ruby.railstutorial.org/chapters/static-pages上的 Ruby on Rails 教程并遇到以下错误

 StaticPages Home page should have the content 'Sample App'
 Failure/Error: page.should have_content('Sample App')
 Capybara::ElementNotFound:
   Unable to find xpath "/html"
 # (eval):2:in `text'
 # ./spec/requests/static_pages_spec.rb:7:in `(root)'

我的宝石文件如下

source 'http://rubygems.org'

gem 'rails', '3.0.10'

gem 'jruby-openssl'

gem 'activerecord-jdbcsqlite3-adapter'
group :development, :test do
   gem 'webrat'
   gem 'rspec-rails', ">= 2.10.0"
   gem 'capybara', ">= 1.1.2"
end

如何摆脱此错误并通过 rspec?源文件

require 'spec_helper'

describe "StaticPages" do

  describe "Home page" do

    it "should have the content 'Sample App'" do
      visit '/static_pages/home'
      # puts page.html
      page.should have_content('Sample App')
    end
  end
end
4

4 回答 4

4

您可能会遇到阻止页面正确呈现的错误。

使用一些调试工具来寻求帮助:

  • 在您的请求规范中,用于puts page.html在您的规范期间打印页面内容。
  • 跟踪日志文件(log/test.log)

你能显示你的 ./spec/requests/static_pages_spec.rb 源代码吗?

于 2012-05-15T19:22:57.570 回答
4

也许问题出在 webrat gem + capybara gem,尝试从您的 gemfile 中删除 webrat。

检查这个问题

于 2012-05-23T23:04:21.437 回答
3

我猜这个问题很可能出在这条线上:

visit '/static_pages/home'

运行“rake routes”以找出路径名并使用其中之一。例如,如果您有一条名为“home”的路线,请使用:

访问 home_path

如果您想要的路径不存在,请将其添加到 config/routes.rb。

于 2013-06-10T21:44:33.087 回答
0

今天我有同样的错误,但情况不同。我包括include Capybara::DSLspec_helper.rbrails_helper.rb)中。

然后,当我运行规范时,会默默地出现一个警告including Capybara::DSL in the global scope is not recommended!。但在一些测试中我得到了Capybara::ElementNotFound: Unable to find xpath "/html"

我必须包括在RSpec.configure块中。

RSpec.configure do |config|
  config.include Capybara::DSL
end
于 2015-05-26T06:40:57.877 回答