Rails 控制器为所有测试呈现迭代的最后一个模板
Rails controller rendering last template of iteration for all tests
我进行了控制器测试,检查是否为不同的状态代码呈现了正确的模板。他们成功了。
我正在尝试使用迭代重构测试,如下所示:
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'
)。我哪里出错了?
我认为每次迭代都需要在 context
中,并且:
retrieve_deal(status_code)
需要像 before
.
这样的格式
我进行了控制器测试,检查是否为不同的状态代码呈现了正确的模板。他们成功了。
我正在尝试使用迭代重构测试,如下所示:
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'
)。我哪里出错了?
我认为每次迭代都需要在 context
中,并且:
retrieve_deal(status_code)
需要像 before
.