更改/成员URL后如何修复rails集成users_login_test.rb测试?

时间:2015-06-19 13:01:37

标签: ruby-on-rails tdd

我一直在修改我按照Rails教程书构建的网站,并且我已经更新了测试套件以匹配我的所有更改,但我很难知道如何重写此测试。< / p>

登录的网址为/,但我将其更改为/members

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

返回的错误是:

 FAIL["test_login_with_valid_information_followed_by_logout", UsersLoginTest, 2015-06-18 19:42:46 +0800]
 test_login_with_valid_information_followed_by_logout#UsersLoginTest (1434627766.77s)
        Expected response to be a redirect to <http://www.example.com/users/762146111> but was a redirect to <http://www.example.com/members>.
        Expected "http://www.example.com/users/762146111" to be === "http://www.example.com/members".
        test/integration/users_login_test.rb:13:in `block in <class:UsersLoginTest>'

修改

路线:

Rails.application.routes.draw do

  get 'members' => 'members#index'
  get 'covers/new_cover' => 'covers#new_cover', :as => :new_cover
  get 'covers/home'
  get 'covers/new'
  get 'covers/create'
  get 'covers/destroy'
  get 'password_resets/new'
  get 'password_resets/edit'
  get 'account_activations/edit'
  get 'sessions/new' 

  root                'covers#home'
  get    'profile'    => 'static_pages#profile'
  get    'tours'   => 'static_pages#tours'
  get    'blog'   => 'static_pages#blog'
  get    'reviews'   => 'static_pages#reviews'
  get    'contact' => 'static_pages#contact'
  get    'signup'  => 'users#new'
  get    'login'   => 'sessions#new'
  post   'login'   => 'sessions#create'
  delete 'logout'  => 'sessions#destroy'
  resources :users do
    member do
      get :following, :followers
    end
  end
  resources :account_activations, only: [:edit]
  resources :password_resets,     only: [:new, :create, :edit, :update]
  resources :members,             only: [:create, :destroy]
  resources :microposts,          only: [:create, :destroy]
  resources :relationships,       only: [:create, :destroy]
  resources :covers, only: [:home, :index, :new, :create, :destroy]
end

1 个答案:

答案 0 :(得分:1)

assert_redirected_to @user更改为assert_redirected_to members_path以确认用户在成功登录后被重定向到/成员。

然后,您需要在follow_redirect!之后更新四行,以断言成员模板(根据您的路线显示成员/索引)并确认页面内容。