我在app/helpers/sessions_helper.rb
中有一个帮助文件,其中包含一个方法my_preference
,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,我可以在我的测试中使用get user_path(my_preference)
。
在其他帖子中,我可以通过在测试文件中加入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
答案 0 :(得分:7)
你的错误信息说:
NameError: undefined local variable or method 'my_preference'
表示您无权访问my_preference
方法。要在课堂上提供该功能,您必须include
课程中的模块。
您必须在SessionsHelper
课程中加入您的模块:PreferencesTest
。
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
答案 1 :(得分:1)
如果有人希望在所有测试中都有可用的特定帮助方法,则可以在test_helper.rb
文件中包含帮助程序模块:
class ActiveSupport::TestCase
...
include SessionsHelper
end