Rails控制器呈现所有测试的最后一个迭代模板

时间:2018-11-08 11:53:18

标签: ruby-on-rails rspec-rails

我进行了控制器测试,检查是否针对不同的状态代码呈现了正确的模板。他们工作了。

我正在尝试使用迭代重构测试,如下所示:

context 'renders multiple views based on status code' do
  VIEW_MAP = {
    404 => 'not_found', 500 => 'server_response', 402 => 'client_response'
  }

  VIEW_MAP.each do |status_code, view|
    retrieve_deal(status_code)
    it 'renders the #{view} template for status code #{status_code}' do
      get :show, params: { id: 'id' }
      expect(response).to render_template(view)
    end
  end
end

其中retrieve_deal方法使用状态代码模拟API调用,并将响应发送到控制器。

但是,为所有测试呈现了最后一个模板('client_response')。有什么想法我要去哪里吗?

1 个答案:

答案 0 :(得分:0)

我认为每次迭代都必须位于context中,并且:

retrieve_deal(status_code)

需要使用before之类的东西。