首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hartl Ruby on Rails教程-第8章失败测试

Hartl Ruby on Rails教程-第8章失败测试
EN

Stack Overflow用户
提问于 2015-04-17 22:18:20
回答 1查看 476关注 0票数 1

我目前正在编写Michael的Rails教程。在本章中,我得到了4个不同的错误,并将非常感谢您帮助解决它们。

$ bundle exec rake检验

代码语言:javascript
复制
   1) Error:
SiteLayoutTest#test_layout_links:
NoMethodError: undefined method `full_title' for #<SiteLayoutTest:0x000000049fd568>
    test/integration/site_layout_test.rb:13:in `block in <class:SiteLayoutTest>'


  2) Error:
UsersLoginTest#test_login_with_remembering:
ActionController::RoutingError: No route matches [POST] "/login"
    test/test_helper.rb:18:in `log_in_as'
    test/integration/users_login_test.rb:31:in `block in <class:UsersLoginTest>'


  3) Error:
UsersLoginTest#test_login_with_valid_information_followed_by_logout:
ActionController::RoutingError: No route matches [POST] "/login"
    test/integration/users_login_test.rb:11:in `block in <class:UsersLoginTest>'


  4) Error:
UsersLoginTest#test_login_without_remembering:
ActionController::RoutingError: No route matches [POST] "/login"
    test/test_helper.rb:18:in `log_in_as'
    test/integration/users_login_test.rb:36:in `block in <class:UsersLoginTest>'

23 runs, 39 assertions, 0 failures, 4 errors, 0 skips

$ exec rake线路

代码语言:javascript
复制
   Prefix Verb   URI Pattern               Controller#Action
     root GET    /                         static_pages#home
     help GET    /help(.:format)           static_pages#help
    about GET    /about(.:format)          static_pages#about
  contact GET    /contact(.:format)        static_pages#contact
   signup GET    /signup(.:format)         users#new
    login GET    /login(.:format)          sessions#new
          GET    /login(.:format)          sessions#create
   logout GET    /logout(.:format)         sessions#destroy
    users GET    /users(.:format)          users#index
          POST   /users(.:format)          users#create
 new_user GET    /users/new(.:format)      users#new
edit_user GET    /users/:id/edit(.:format) users#edit
     user GET    /users/:id(.:format)      users#show
          PATCH  /users/:id(.:format)      users#update
          PUT    /users/:id(.:format)      users#update
          DELETE /users/:id(.:format)      users#destroy

config/scripes.rb

代码语言:javascript
复制
Rails.application.routes.draw do

  root             'static_pages#home'
  get 'help'    => 'static_pages#help'
  get 'about'   => 'static_pages#about'
  get 'contact' => 'static_pages#contact'
  get 'signup'  => 'users#new'
  get 'login'   => 'sessions#new'
  get 'login'   => 'sessions#create'
  get 'logout'  => 'sessions#destroy'
  resources :users
end

测试/集成/用户_登录_test.rb

代码语言:javascript
复制
require 'test_helper'

class UsersLoginTest < ActionDispatch::IntegrationTest

  def setup
    @user = users(:michael)
  end

  test "login with valid information followed by logout" do
    get login_path
    post login_path, session: { email: @user.email, password: 'password' }
    assert is_logged_in?
    assert_redirected_to @user
    follow_redirect!
    assert_template 'users/show'
    assert_select "a[href=?]", login_path, count: 0
    assert_select "a[href=?]", logout_path
    assert_select "a[href=?]", user_path(@user)
    delete logout_path
    assert_not is_logged_in?
    assert_redirected_to root_url
    # Simulate a user clicking logout in a second window.
    delete logout_path
    follow_redirect!
    assert_select "a[href=?]", login_path
    assert_select "a[href=?]", logout_path,      count: 0
    assert_select "a[href=?]", user_path(@user), count: 0
  end

  test "login with remembering" do
    log_in_as(@user, remember_me: '1')
    assert_not_nil cookies['remember_token']
  end

  test "login without remembering" do
    log_in_as(@user, remember_me: '0')
    assert_nil cookies['remember_token']
  end
end

测试/测试.

代码语言:javascript
复制
ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'

class ActiveSupport::TestCase
  fixtures :all

  # Returns true if a test user is logged in.
  def is_logged_in?
    !session[:user_id].nil?
  end

  # Logs in a test user.
  def log_in_as(user, options = {})
    password    = options[:password]    || 'password'
    remember_me = options[:remember_me] || '1'
    if integration_test?
      post login_path, session: { email:       user.email,
                                  password:    password,
                                  remember_me: remember_me }
    else
      session[:user_id] = user.id
    end
  end

  private

    # Returns true inside an integration test.
    def integration_test?
      defined?(post_via_redirect)
    end
end

测试/集成/站点_布局_test.rb

代码语言:javascript
复制
require 'test_helper'

class SiteLayoutTest < ActionDispatch::IntegrationTest

  test "layout links" do
    get root_path
    assert_template 'static_pages/home'
    assert_select "a[href=?]", root_path, count: 2
    assert_select "a[href=?]", help_path
    assert_select "a[href=?]", about_path
    assert_select "a[href=?]", contact_path
    get signup_path
    assert_select "title", full_title("Sign up")
  end
end

我做了一个mess..ugh。任何和所有的帮助都是非常感谢!

编辑:而且,我对所有这些都很陌生,所以如果我应该删除那些测试绿色的旧测试,请告诉我。我不确定这些失败的测试是否因为我做错了什么而变红,或者当我阅读本教程时,我应该删除它们。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-17 22:26:15

在你的routes.rb

代码语言:javascript
复制
get 'login'   => 'sessions#new'
get 'login'   => 'sessions#create'

看上去怪怪的。我想应该是

代码语言:javascript
复制
get 'login'   => 'sessions#new'
post 'login'  => 'sessions#create'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29710354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档