未定义的局部变量或方法`login_path'

8vi*_*ius 2 integration-testing ruby-on-rails path minitest

我正在为会话控制器在Rails中进行一些集成测试,并且在测试中我得到了my login_path的定义,即使它是在routes.rb文件中,当我在控制台中调用该路径时,它也会显示出来。知道是什么原因造成的吗?

route.rb:

Rails.application.routes.draw do
  get 'sessions/new'

  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'
  post   'login'   => 'sessions#create'
  delete 'logout'  => 'sessions#destroy'

  resources :users
end
Run Code Online (Sandbox Code Playgroud)

测试:

require 'test_helper'

class UsersLoginTest < ActionDispatch::IntegrationTest
  get login_path
  assert_template 'sessions/new'
  post login_path, session: { email: "", password: "" }
  assert_template 'sessions/new'
  assert_not flash.empty?
  get root_path
  assert flash.empty?
end
Run Code Online (Sandbox Code Playgroud)

Dab*_*ius 5

如果我正确阅读了文档,则应调用“ test”方法,然后将测试代码作为一个块传递。这样的事情应该工作

class UsersLoginTest < ActionDispatch::IntegrationTest
  test "user can log in" do
    get login_path
    assert_template 'sessions/new'
    post login_path, session: { email: "", password: "" }
    assert_template 'sessions/new'
    assert_not flash.empty?
    get root_path
    assert flash.empty?
  end
end
Run Code Online (Sandbox Code Playgroud)