我在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)'
我的Gem文件如下
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
5条答案
按热度按时间wqsoz72f1#
也许问题出在webrat gem+capybara gem上,试着从你的gem文件中删除webrat。
check this issue
3htmauhk2#
您可能有一个错误,使页面无法正确呈现。
使用一些调试工具获得帮助:
puts page.html
在规范期间打印页面内容。您能展示一下您的./Spec/Requests/Static_Pages_spec.rb源代码吗?
wwtsj6pe3#
我猜问题最有可能出在这一行上:
visit '/static_pages/home'
运行‘rake routes’找出路径名并使用其中之一。例如,如果您有一条名为‘home’的路由,请使用:
访问Home_Path
如果您想要的路径不存在,请将其添加到config/routes.rb。
r6vfmomb4#
今天我犯了同样的错误,但情况不同。我把
include Capybara::DSL
包括在spec_helper.rb
(rails_helper.rb
)中。然后,当我运行Spec时,一个警告静默地显示在
including Capybara::DSL in the global scope is not recommended!
上。但在一些测试中,我得了Capybara::ElementNotFound: Unable to find xpath "/html"
。我不得不包括在
RSpec.configure
区块中。cwxwcias5#
在这里添加我的解决方案,因为我遇到了这个错误,而最初的问题可能对Capybara错误的实际原因含糊其辞。
在我的控制器中完成
def create
方法时,正在测试Submit按钮以重定向回(“上下文相关的”控制器)索引页,尽管在create
方法中没有显式redirect_to
索引。添加了
redirect_to "/<your_index_page_path_here>"
并使测试通过/解决了有问题的测试失败。