ASP.NET Core 6 Web API的集成测试抛出System.InvalidOperationException [英] Integration test for ASP.NET Core 6 web API throws System.InvalidOperationException

查看:0
本文介绍了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() WebApplicationFactory1.EnsureServer() WebApplicationFactory1.CreateDefaultClient(DelegatingHandler[] handlers) WebApplicationFactory1.CreateDefaultClient(Uri基本地址, DelegatingHandler[]处理程序) WebApplicationFactory1.CreateClient(WebApplicationFactoryClientOptions options) WebApplicationFactory1.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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆