Xunit测试中Assert.Equal断言失败问题求助
解决Xunit断言NotFoundResult相等失败的问题
问题原因
NotFoundResult是引用类型,Assert.Equal默认会做引用相等性检查——你手动创建的expectedResult和ProcessRequest返回的result是两个完全独立的对象实例,引用地址不同,所以断言会失败。
解决方案
根据测试需求,推荐以下两种常用的断言方式:
1. 仅验证返回结果的类型
如果只需要确认方法返回的是NotFoundResult类型,直接用类型断言:
// Assert Assert.IsType<NotFoundResult>(result);
如果允许返回NotFoundResult的子类,可改用:
Assert.IsAssignableFrom<NotFoundResult>(result);
2. 验证状态码(更严谨)
NotFoundResult对应HTTP 404状态码,你可以先断言类型,再验证状态码的值:
// Assert var actualResult = Assert.IsType<NotFoundResult>(result); Assert.Equal(StatusCodes.Status404NotFound, actualResult.StatusCode);
替换后的完整断言代码示例
//Assert var actualResult = Assert.IsType<NotFoundResult>(result); Assert.Equal(StatusCodes.Status404NotFound, actualResult.StatusCode);
内容的提问来源于stack exchange,提问作者Harikarthik
相关产品推荐
相关产品推荐

