You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails项目中RSpec请求测试失败,寻求问题排查帮助

RSpec请求测试失败:未获取到2xx状态码的解决方法

你的测试代码存在两个关键问题,直接导致了失败:

1. 没有实际发送HTTP请求

在RSpec的请求测试中,必须先调用对应的HTTP方法(比如get '/')模拟发送请求,否则response对象是空的,根本不会生成状态码。

2. 错误地直接断言response对象包含文本

response是一个Response实例,要检查页面内容,必须通过response.body获取响应的HTML文本后再做断言。

修正后的users_spec.rb代码:

require 'rails_helper'

RSpec.describe 'Get /', type: :request do
  it 'test / get method' do
    get '/' # 新增:发送GET请求到根路径
    expect(response).to have_http_status(:success)
    expect(response.body).to include('index') # 修改为检查响应体内容
  end
end

失败原因说明

  • 未添加get '/'时,response未被初始化,没有状态码,因此报错提示"expected the response to have a success status code (2xx) but it was "
  • 原代码中expect(response).to include('index')会直接失败,因为你是在断言一个对象是否包含字符串,而非检查页面实际输出的内容。

运行修正后的测试,即可正常通过。

内容的提问来源于stack exchange,提问作者zzxczxczaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 13:54:23