加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rspec可靠性与路由. (Rails示例RoR教程)

发布时间:2020-12-17 02:16:42 所属栏目:百科 来源:网络整理
导读:在使用5.2上的 Ruby on Rails Learn by Example教程时,我对Rspec感到沮丧. 我目前正在尝试使用rspec测试我的路由,并且即使我已经正确地遵循了教程中的步骤并且已经通过手动检查和测试路由来验证路由工作,测试总是以失败的形式返回我. 例如,layout_links_spec
在使用5.2上的 Ruby on Rails Learn by Example教程时,我对Rspec感到沮丧.

我目前正在尝试使用rspec测试我的路由,并且即使我已经正确地遵循了教程中的步骤并且已经通过手动检查和测试路由来验证路由工作,测试总是以失败的形式返回我.

例如,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'
        reponse.should have_selector('title',:content => "Help")
    end

end

我的路线看起来像:

SampleApp::Application.routes.draw do
  match '/contact',:to => 'pages#contact'
  match '/about',:to => 'pages#about'
  match '/help',:to => 'pages#help'
  get "pages/home"
  get "pages/contact"
  get "pages/about"
  get "pages/help"

  root :to => 'pages#home'
end

Rspec返回此失败:

5) LayoutLinks should have a Home page at '/'
     Failure/Error: get '/'
     ActionController::RoutingError:
       No route matches [GET] "/"
     # ./spec/requests/layout_links_spec.rb:6:in `block (2 levels) in <top (required)>'

  6) LayoutLinks should have a Contact page at '/contact'
     Failure/Error: get '/contact'
     ActionController::RoutingError:
       No route matches [GET] "/contact"
     # ./spec/requests/layout_links_spec.rb:11:in `block (2 levels) in <top (required)>'

  7) LayoutLinks should have an About page at '/about'
     Failure/Error: get '/about'
     ActionController::RoutingError:
       No route matches [GET] "/about"
     # ./spec/requests/layout_links_spec.rb:16:in `block (2 levels) in <top (required)>'

  8) LayoutLinks should have a Help Page at '/help'
     Failure/Error: get '/help'
     ActionController::RoutingError:
       No route matches [GET] "/help"
     # ./spec/requests/layout_links_spec.rb:21:in `block (2 levels) in <top (required)>'

我的pages_controller_spec.rb测试也出现了类似的错误

describe "GET 'home'" do
    it "should be successful" do
      get 'home'
      response.should be_success
    end

获取此rspec错误:

1) PagesController GET 'home' should be successful
     Failure/Error: get 'home'
     ActionView::Template::Error:
       undefined local variable or method `root_path' for #<#<Class:0x00000103e8b210>:0x00000103e87de0>
     # ./app/views/layouts/_header.html.erb:3:in `_app_views_layouts__header_html_erb__1560745193027372362_2179584160'
     # ./app/views/layouts/application.html.erb:10:in `_app_views_layouts_application_html_erb__2627526215404316040_2176993080'
     # ./spec/controllers/pages_controller_spec.rb:15:in `block (3 levels) in <top (required)>'

我用教程检查了我的代码,看起来是正确的.如果我输入url localhost:3000 / home或/ about等,我会进入正确的页面,表明它必须正确路由.我可以继续学习本教程,但我想学习如何在实践中使用TDD并使用rspec,但我觉得我不能依赖于rspec这样做…

解决方法

我有完全相同的问题,并且正在接近扔东西.

重启Spork解决了这个问题,一切都与世界相处得很好

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读