2015-08-15 68 views
5

我在app/helpers/sessions_helper.rb中有一个帮助文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,以便我可以在我的测试中使用get user_path(my_preference)如何在Rails集成测试中提供助手方法?

在其他的帖子我看了,这是通过在测试文件require sessions_helper可能的,但我仍然得到错误NameError: undefined local variable or method 'my_preference'。我究竟做错了什么?

require 'test_helper' 
require 'sessions_helper' 

class PreferencesTest < ActionDispatch::IntegrationTest 

    test "my test" do 
    ... 
    get user_path(my_preference) 
    end 

end 

回答

7

你的错误messagae说:

NameError: undefined local variable or method 'my_preference' 

,这意味着你不必my_preference方法访问。要在班级中提供该模块,您必须在课程中使用include模块。

你必须在你的PreferencesTest课程中加入你的模块:SessionsHelper

include SessionsHelper 

然后,将在您的测试中使用实例方法my_preference

所以,你想做的事:

require 'test_helper' 
require 'sessions_helper' 


class PreferencesTest < ActionDispatch::IntegrationTest 

    include SessionsHelper 

    test "my test" do 
    ... 
    get user_path(my_preference) 
    end 

end 
+0

谢谢,这有效!现在,如果我忽略'require'sessions_helper'',现在似乎也行得通。那有意义吗?是否需要'sessions_helper'? – Marty

+0

是的,你不应该需要,如果它的'app/helpers'目录下 让我知道! –

1

如果有人想要在所有可用的测试特定的辅助方法,也可以包括在test_helper.rb文件助手模块:

class ActiveSupport::TestCase 
... 
include SessionsHelper 
end 
相关问题