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

Assert.IsType()断言失败求助:期望OkObjectResult实际为ObjectResult

排查Assert.IsType断言失败的原因

核心可能原因

  • 控制器返回类型不匹配:Search方法实际返回的是ObjectResult而非OkObjectResult。比如控制器中写的是return new ObjectResult(data) { StatusCode = 200 };,而非ASP.NET Core标准的return Ok(data);——后者会自动生成对应200状态码的OkObjectResult(它是ObjectResult的子类)。
  • 过滤器/中间件篡改返回结果:全局异常过滤器、动作过滤器或中间件,可能在请求处理流程中把原本的OkObjectResult替换或包装成了基础的ObjectResult。
  • Mock服务触发非预期分支:GetMockedTokenController()中的依赖Mock返回了异常值,导致控制器执行了返回ObjectResult的分支(比如错误处理逻辑),而非正常返回OkObjectResult的分支。

排查与解决步骤

  1. 直接调试控制器方法:在测试中添加断点,或直接运行Search方法,观察实际返回的结果类型和状态码。
  2. 临时调整断言验证细节:先将断言改为var objectResult = Assert.IsType<ObjectResult>(response);,然后检查objectResult.StatusCode是否为200、objectResult.Value是否符合预期,确认是否是逻辑上的"成功返回"仅类型不符合断言。
  3. 修正控制器代码(若需):如果业务逻辑确实应返回200状态结果,将控制器返回语句改为return Ok(你的数据对象);,确保生成OkObjectResult。
  4. 校验Mock依赖行为:验证GetMockedTokenController()中所有依赖的Mock配置,确保它们返回的是触发控制器正常分支的预期值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:25:32