我试图了解如何在 ASP.NET Core 6 Web API 控制器上进行集成测试。我尝试过遵循所有guides,所以我可以找到帖子和建议,但由于某种原因,我不断遇到指南中未提及的错误。
事件控制器测试.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();
...
待测试项目.csproj
...
<ItemGroup>
<InternalsVisibleTo Include="IntegrationTests" />
</ItemGroup>
...
运行测试时会抛出以下错误:
消息: System.InvalidOperationException:没有方法“公共静态”
IHostBuilder CreateHostBuilder(string[] args)' 或 'public static
IWebHostBuilder CreateWebHostBuilder(string[] args)' 发现于
'程序'。或者,可以扩展 WebApplicationFactory`1
'CreateHostBuilder' 或 'CreateWebHostBuilder' 可以被覆盖
提供您自己的实例。
堆栈跟踪: WebApplicationFactory1.CreateWebHostBuilder() WebApplicationFactory
1.EnsureServer()
Web应用程序工厂1.CreateDefaultClient(DelegatingHandler[] handlers) WebApplicationFactory
1.CreateDefaultClient(Uri基本地址,
DelegatingHandler[] 处理程序)
Web应用程序工厂1.CreateClient(WebApplicationFactoryClientOptions options) WebApplicationFactory
1.创建客户端()
EventControllerTests.EventController_Post_RespondsOkIfRequestContainsCorrectFeilds_SuccessAsync() line 17
--- 先前位置的堆栈跟踪结束 ---
这个帖子显示为可能的解决方案,但使用的是 Startup 类的 pre-6。 .NET 6 解决方案是什么?
如果我改为遵循“使用默认 WebApplicationFactory 进行基本测试”-指南由于测试类构造函数抛出,我什至无法构建解决方案
错误 CS0051 可访问性不一致:参数类型
“WebApplicationFactory”比方法更难访问
'EventControllerTests.EventControllerTests(WebApplicationFactory)' 集成测试
C:\...\EventControllerTests.cs
解决方案:
这是由于测试项目的 Microsoft.AspNetCore.Mvc.Testing 包使用了错误的版本(它使用的是版本 5.*)。确保您使用适合 .NET 6 的版本。到目前为止,有一个适合我的 6.0.0-rc.2.21480.10 版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)