Hartl第5章问题

时间:2013-10-30 01:50:41

标签: ruby-on-rails tdd railstutorial.org

通过Hartl的Rails教程和第5.4.2章我无法通过某项测试。

这是错误:

 1) UserPages GET /user_pages works! (now write some real specs)
     Failure/Error: get user_pages_index_path
     NameError:
       undefined local variable or method `user_pages_index_path' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x007f9106e2cce8>
     # ./spec/requests/user_pages_spec.rb:7:in `block (3 levels) in <top (required)>'

以下是user_pages_spec.rb中的测试:

require 'spec_helper'

    describe "UserPages" do
      describe "GET /user_pages" do
        it "works! (now write some real specs)" do
          # Run the generator again with the 
          #  --webrat flag if you want to use webrat methods/matchers

          get user_pages_index_path
          response.status.should be(200)
        end
      end
    end

这是路线文件:

get "users/new"
root  'static_pages#home'
match '/signup',  to: 'users#new',            via: 'get'
match '/help',    to: 'static_pages#help',    via: 'get'
match '/about',   to: 'static_pages#about',   via: 'get'
match '/contact', to: 'static_pages#contact', via: 'get'
match 'static_pages/home',    to: 'static_pages#home', via: 'get'

赞赏任何输入


抱歉格式化。在该部分的最开始是一个spec文件:spec / requests / user_pages_spec.rb

require 'spec_helper'

describe "User pages" do

  subject { page }

  describe "signup page" do
    before { visit signup_path }

    it { should have_content('Sign up') }
    it { should have_title(full_title('Sign up')) }
  end
end

我收到以下错误:

失败/错误:获取user_pages_index_path NameError:未定义的局部变量或方法`user_pages_index_path'用于#

这是rake路线输出:

       Prefix Verb URI Pattern                  Controller#Action
    users_new GET /users/new(.:format)         users#new
         root GET /                            static_pages#home
       signup GET /signup(.:format)            users#new
         help GET /help(.:format)              static_pages#help
        about GET /about(.:format)             static_pages#about
      contact GET /contact(.:format)           static_pages#contact

static_pages_home GET /static_pages/home(.:format)static_pages #home

2 个答案:

答案 0 :(得分:0)

只需删除“user_pages_spec.rb”中的内容即可 因为没有这样的方法叫做 user_pages_index_path

所以,这应该是什么

<强> user_pages_spec.rb

require 'spec_helper'

describe "User pages" do

  subject { page }

  describe "signup page" do
    before { visit signup_path }

    it { should have_content('Sign up') }
    it { should have_title(full_title('Sign up')) }
  end
end

此外,在 /config/routes.rb 文件

SampleApp::Application.routes.draw do
  get "users/new"

  root  'static_pages#home'
  match '/signup',  to: 'users#new',            via: 'get'
  match '/help',    to: 'static_pages#help',    via: 'get'
  match '/about',   to: 'static_pages#about',   via: 'get'
  match '/contact', to: 'static_pages#contact', via: 'get'
  .
  .
  .
end

答案 1 :(得分:0)

我遇到了同样的问题,我只是注释掉了“user_pages_spec.rb”文件。当我这样做时,我通过了所有测试。这是正确的答案,我不知道,但正如我所说,它允许测试通过。