如何使用最小起订量框架模拟httpresponse.clear()进行单元测试?

How do i mock httpresponse.clear() with MOQ framework for unit test?

提问人:Jörgen Andersson 提问时间:10/23/2023 最后编辑:journpyJörgen Andersson 更新时间:10/25/2023 访问量:27

问:

我找不到任何好的答案,如果存在,请删除这个问题。 我想用最小起订量框架模拟httpresponse.clear(),但不知道该怎么做?

这是软件包:https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.http.responseextensions.clear?view=aspnetcore-7.0

var mockHttpResponse = new Mock<HttpResponse>();    
mockHttpResponse.Setup(x => x.Clear());

以及

mockHttpResponse.SetupGet(x => x.Clear());

但它在运行测试时会抛出。Not supported

C# 单元测试 最小起订量 NET-7.0 xunit.net

评论

1赞 Good Night Nerd Pride 10/23/2023
Clear()似乎是一个扩展方法,它始终是静态的,因此不能用 Moq 来嘲笑。
1赞 Good Night Nerd Pride 10/23/2023
一种解决方案可能是查看 的实现,看看它调用了哪些方法,并尝试为这些方法创建 s。Clear()Setup()
2赞 MakePeaceGreatAgain 10/23/2023
为什么你首先要嘲笑响应,而不是你的服务?
0赞 Panagiotis Kanavos 10/23/2023
事实上,为什么要嘲笑 Clear,甚至使用 Clear?在基于控制器的 API 和最小 API 中,响应都是根据操作的结果构造的。这听起来像是尝试将 WebForms 代码迁移到 .NET 7,例如在文件下载中,以删除控件或事件处理程序已经发出的任何标头。Clear
0赞 Panagiotis Kanavos 10/23/2023
你想测试什么?ControllerBase.Response 返回 。在 ASP.NET Core 中,您可以将自己的测试 HttpContext 实例注入控制器。你不需要模拟 Response 的方法,因为你已经有一个功能齐全的实例。HttpContext?.Response

答: 暂无答案