Minitest - 测试使用请求参数的辅助方法

Minitest - testing helper method that uses request params

我正在将使用 RSpec 成功测试辅助方法的应用程序移植到 MiniTest。下面是application_helper.rb

中的方法
def active_controller?(controller_name)
  params[:controller] == controller_name ? 'active' : nil
end

在视图中使用它来帮助在控制器中突出显示活动控制器。

下面是助手的(不工作)测试。

require 'test_helper'

class ApplicationHelperTest < ActionView::TestCase

test 'active_controller? returns correct value' do
    @request = ActionController::TestRequest.new
    @request.params[:controller] = 'dashboard'
    assert active_controller?('dashboard')
  end
end

问题是我无法弄清楚如何访问(或存根)请求参数以包含能够断言方法 returns true 的控制器。

有什么想法吗?

尝试使用撬棒 gem 来查看 @request@request.params[:controller]params[:controller] 实际上 return。 断言 active_controller?('dashboard') 正在对照 params[:controller] 检查 'dashboard',目前为零,因为您只在测试中分配了 @request.params[:controller]
如果测试是:

test 'active_controller? returns correct value' do
  params[:controller] = 'dashboard'
  assert active_controller?('dashboard')
end

断言正在将 'dashboard' 与已分配的 params[:controller] 进行比较。