为什么Rspec说"失败/错误:无法从回溯中找到匹配的行"?

Chr*_*ris 30 ruby rspec ruby-on-rails autotest ruby-on-rails-3

我在这里关注rails教程:http://railstutorial.org/chapters/filling-in-the-layout#top

当我运行"rspec spec /"时,我得到一堆看起来像这样的错误:

1) LayoutLinks should have a Home page at '/'
    Failure/Error: Unable to find matching line from backtrace
    stack level too deep
    # C:/Ruby19/lib/ruby/1.9.1/forwardable.rb:185

2) LayoutLinks should have a Contact page at '/contact'
    Failure/Error: Unable to find matching line from backtrace
    stack level too deep
    # C:/Ruby19/lib/ruby/1.9.1/forwardable.rb:185
Run Code Online (Sandbox Code Playgroud)

但是当我在我的网络浏览器中访问localhost:3000 /和localhost:3000/contact时,页面就在那里,并且有正确的标题.这是我的myrailsroot\spec\requests\layout_links_spec.rb文件:

require 'spec_helper'

describe "LayoutLinks" do

  it "should have a Home page at '/'" do
    get '/'
    response.should have_selector('title', :content => "Home")
  end

  it "should have a Contact page at '/contact'" do
    get '/contact'
    response.should have_selector('title', :content => "Contact")
  end

  it "should have an About page at '/about'" do
    get '/about'
    response.should have_selector('title', :content => "About")
  end

  it "should have a Help page at '/help'" do
    get '/help'
    response.should have_selector('title', :content => "Help")
  end

  it "should have a signup page at '/signup'" do
    get '/signup'
    response.should have_selector('title', :content => "Sign up")
  end

end
Run Code Online (Sandbox Code Playgroud)

任何想法都会很棒,谢谢

Abo*_*uby 14

这是由于RSpec 2.0.0.beta.19中的一个错误.如果您使用2.0.0.beta.18作为教程建议,它将正常工作.只需将Gemfile中的任何版本更改为beta 18,捆绑安装并再次运行测试.

这是我的Gemfile中的相关部分.

group :development do
  gem 'rspec-rails', '2.0.0.beta.18'
end

group :test do
  gem 'rspec-rails', '2.0.0.beta.18'
  gem 'spork', '0.8.4'
end
Run Code Online (Sandbox Code Playgroud)

另请注意,Spork也会不时出现这样的问题.如果你得到了莫名其妙的测试失败,特别是如果你刚刚添加了新的控制器或动作,那就去激励一下.按Ctrl-C并再次运行spork服务器.


Jin*_*ing 9

我的gemfile看起来像这样,它的工作原理

group :test do 
    gem 'rspec-rails'
    gem 'webrat', '0.7.1'
end
Run Code Online (Sandbox Code Playgroud)

其中rspec-rails(2.1.0)

但是以下不是:

group :test do 
    gem 'rspec-rails'
    gem 'webrat', '0.7.2'
end
Run Code Online (Sandbox Code Playgroud)

所以我认为这是webrat的播放.