0

我正在使用带有 rspec-rails 3.7 和 rails-controller-testing gem 的 Rails 5.2。我有一个控制器可以过滤索引操作的结果(是的,不好的做法,遗留代码等)。问题是我需要测试当我这样做时GET work_orders/index params: { keywords: 'some word' },实例变量@work_orders 返回过滤结果,但如果我使用assigns(:work_orders)它返回nil。我什至测试了将最后一个 WorkOrder 分配给该变量的方法,但它仍然没有在散列中显示该变量。

work_orders_controller.rb

def index
  ... some code ...
  @work_orders = WorkOrder.last
  respond_to do |format|
      format.html
  end
end

规格/控制器/work_orders_controller_spec.rb

require 'rails_helper'

describe WorkOrdersController do
  describe 'GET index' do
    it 'collects work orders filtered by courier_ot in @work_orders' do
      get :index
      expect(assigns(:work_orders)).to be_an_instance_of WorkOrder
    end
  end
end

这是我测试过的最简单的例子,但它不起作用。该assigns调用返回 nil,如果我使用 byebug 检查哈希,它只有这个:{"marked_for_same_origin_verification"=>true}

真正的测试应该使用get :index, params: { keywords: 'asdf' }并测试它是否获得过滤的工单。

任何帮助,将不胜感激。谢谢。

4

0 回答 0