如何在Rails集成测试中提供辅助方法?

时间:2015-08-15 21:41:38

标签: ruby-on-rails ruby ruby-on-rails-4 testing

我在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

2 个答案:

答案 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