我进行了控制器测试,检查是否针对不同的状态代码呈现了正确的模板。他们工作了。
我正在尝试使用迭代重构测试,如下所示:
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'
)。有什么想法我要去哪里吗?
答案 0 :(得分:0)
我认为每次迭代都必须位于context
中,并且:
retrieve_deal(status_code)
需要使用before
之类的东西。