gpt4 book ai didi

ruby-on-rails - 路由的 Rspec 可靠性。 (Rails by Example RoR 教程)

转载 作者:行者123 更新时间:2023-12-04 03:38:13 24 4
gpt4 key购买 nike

在学习 5.2 上的 Ruby on Rails 实例学习教程时,我对 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 来做这件事......

最佳答案

我遇到了完全相同的问题,差点就要扔东西了。

重启 Spok 解决了这个问题,一切都恢复正常了

关于ruby-on-rails - 路由的 Rspec 可靠性。 (Rails by Example RoR 教程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8642653/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com