2015-03-02 62 views
2

我正在为会话控制器在rails中进行一些集成测试,并且在测试中我发现我的login_path未定义,即使它在routes.rb文件中定义,并且当我调用它也显示在控制台中的路径。任何想法是什么造成这个?未定义的本地变量或方法`login_path'

的routes.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 

测试:

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 
+0

尝试'耙routes'列出所有可用的路线在Rails项目 – MrYoshiji 2015-03-02 18:24:32

+0

它的存在,这就是为什么错误是没有意义的我。 – 8vius 2015-03-02 18:40:00

回答

4

如果我正确地读documentation,你应该叫 “测试” 的方法,然后通过测试代码块。像这样的东西应该工作

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 
+0

是的,没有注意到我错过了这个包装。谢谢。 – 8vius 2015-03-02 19:01:49

相关问题