RSpec控制器测试:MapsController的index动作测试报错求助
修复MapsController#index的RSpec测试错误
嘿,我一眼就看出问题所在啦——你对index动作的测试断言完全搞反了方向!
问题根源
一般来说,控制器的index动作是用来展示资源列表的,它的正常行为是渲染对应的视图模板,而不是重定向到自身的路径。你现在写的断言是期望响应重定向到maps_path,但这不符合index动作的默认逻辑,所以测试才会失败。
修正后的测试代码
把你的测试改成这样就对了:
require 'rails_helper' RSpec.describe MapsController, type: :controller do describe 'GET #index' do it 'shows a list of all maps' do get :index # 断言响应成功(状态码200) expect(response).to have_http_status(:ok) # 断言渲染了index模板 expect(response).to render_template(:index) end end end
额外说明
如果你确实希望index动作执行重定向,那得先检查你的MapsController里的index方法是不是手动写了redirect_to maps_path——但这通常不符合RESTful设计的常规做法,index动作就是用来展示列表的,直接渲染视图才是正确的。
内容的提问来源于stack exchange,提问作者Trenton Tyler
相关产品推荐
相关产品推荐

