ASP.NET Core 6 Web API的集成测试抛出System.InvalidOperationException [英] Integration test for ASP.NET Core 6 web API throws System.InvalidOperationException
本文介绍了ASP.NET Core 6 Web API的集成测试抛出System.InvalidOperationException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想了解如何在ASP.NET Core 6 Web API控制器上进行集成测试。我尝试了所有guides,所以我可以找到帖子和推荐,但由于某种原因,我总是遇到指南中没有提到的错误。
EventControllerTests.cs
namespace UnitTests.ProjectToBeTested.Controllers
{
public class EventControllerTests
{
[Fact]
public async Task EventController_Post_RespondsOkIfRequestContainsCorrectFeilds_SuccessAsync()
{
// Arrange
var application = new WebApplicationFactory<Program>();
var client = application.CreateClient();
...
ProjectToBeTested.csproj
...
<ItemGroup>
<InternalsVisibleTo Include="IntegrationTests" />
</ItemGroup>
...
这会在运行测试时引发以下问题:
消息: 系统.InvalidOperationException:无方法的公共静态 IHostBuilder CreateHostBuilder(字符串[]args)‘或’公共静态 在上找到IWebHostBuilder CreateWebHostBuilder(字符串[]args)‘ "程序"。或者,可以扩展WebApplicationFactory`1并 "CreateHostBuilder"或"CreateWebHostBuilder"可以重写为 提供您自己的实例。 堆栈跟踪: WebApplicationFactory1.CreateWebHostBuilder() WebApplicationFactory
1.EnsureServer() WebApplicationFactory1.CreateDefaultClient(DelegatingHandler[] handlers) WebApplicationFactory
1.CreateDefaultClient(Uri基本地址, DelegatingHandler[]处理程序) WebApplicationFactory1.CreateClient(WebApplicationFactoryClientOptions options) WebApplicationFactory
1.CreateClient() EventControllerTests.EventController_Post_RespondsOkIfRequestContainsCorrectFeilds_SuccessAsync() line 17 -来自前一位置的堆栈跟踪结束-
This SO post显示为可能的解决方案,但正在使用使用Startup类的Pre-6。.NET 6解决方案是什么?
如果我改用"Basic tests with the default WebApplicationFactory"-guide,我甚至无法生成解决方案,因为测试类构造函数引发了
错误CS0051辅助功能不一致:参数类型 "WebApplicationFactory"比方法更难访问 ‘EventControllerTests.EventControllerTests(WebApplicationFactory)’集成测试 C:...EventControllerTests.cs
推荐答案
解决方案:
这是由于测试项目的Microsoft.AspNetCore.Mvc.Testing包使用了错误的版本(它使用的是版本5.*)。请确保您使用的是适合.NET 6的版本。到目前为止,有一个6.0.0-rc.2.21480.10版本可以为我工作。
这篇关于ASP.NET Core 6 Web API的集成测试抛出System.InvalidOperationException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文