ASP.NET Core 6 Web API 的集成测试抛出 System.InvalidOperationException

2023-11-22

我试图了解如何在 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() WebApplicationFactory1.EnsureServer() Web应用程序工厂1.CreateDefaultClient(DelegatingHandler[] handlers) WebApplicationFactory1.CreateDefaultClient(Uri基本地址, DelegatingHandler[] 处理程序) Web应用程序工厂1.CreateClient(WebApplicationFactoryClientOptions options) WebApplicationFactory1.创建客户端() 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(使用前将#替换为@)

ASP.NET Core 6 Web API 的集成测试抛出 System.InvalidOperationException 的相关文章

随机推荐

  • 如何在 SQL Server 中更新具有数百万行的大型表?

    I ve an UPDATE可以更新超过百万条记录的语句 我想批量更新它们 1000 或 10000 我尝试过 ROWCOUNT但我无法得到想要的结果 只是出于测试目的 我所做的是 我选择了包含 14 条记录的表并将行数设置为 5 此查询应
  • 如何在 ConstraintValidator 中自动装配服务

    我正在使用 Spring MVC 编写我的应用程序 我想验证用户注册时数据库中是否存在电子邮件 我已经编写了自己的注释约束 名为独特的电子邮件 我的用户实体用户 java Entity Table name users public cla
  • Spring RestTemplate 重定向 302

    我正在尝试使用 Spring Rest 模板执行登录请求 RestTemplate restTemplate new RestTemplate HttpHeaders headers new HttpHeaders headers setC
  • 如何在 jQuery 中截断字符串?

    我的标题很长 想截断它们 但要以一种不打断单词的方式 我的意思是剪切发生在单词之间 而不是剪切一个单词 我怎样才能使用 jquery 做到这一点 From jQuery 文本截断 阅读更多样式 尝试这个 var title This is
  • 如何使用 lapply() 将 NA 更改为 0?

    我有一个数据集列表 dfList lt list df1 df2 df3 每个数据集看起来都是这样的 apples oranges 1 2 NA 4 我想以编程方式更改每个数据帧的NAs to 0s 我该怎么做呢 到目前为止我的代码 lap
  • 如何在 SQL Server 中保存波斯日期时间?

    在过去的项目中 我尝试将时间格式保存为公历日期 并在应用程序的逻辑层将公历日期转换为波斯日期 但我厌倦了这样做 我需要在 SQL Server 中以波斯语格式保存和恢复日期时间 无需任何转换 sql server中的datetime2类型可
  • Html.DropDownList 选择的值无法使用 ViewBag 工作

    好吧 经过几个小时阅读这里的内容 尝试所有解决方案均未成功 还发现本文我以为这会救我的命 什么也没有 长话短说 这是我的视图 所有组合 Html DropDownList yearDropDown IEnumerable
  • 有没有办法备份 Visual Studio Team Services 项目?

    我提倡使用 Visual Studio Team Services 作为我们的源代码控制解决方案 并且实际上已经开始这样做了 然而 我的经理对云托管存储和服务有些担心 他想知道在团队服务因任何原因无法访问时我们的应急计划是什么 我已经指出
  • 如何删除圆内的一组网格点?

    我正在尝试创建一个网格网格 而没有一些落在具有指定坐标和半径的圆内的点 我无法减去落在圆圈内的网格点 这是我的代码 import math import numpy import matplotlib pyplot as plt N 50
  • 卷曲:(7)无法连接到本地主机端口8090:连接被拒绝

    需要帮忙 一直在尝试解决这个问题 但找不到答案 或者更确切地说 我还没有遇到任何答案 我有一个带有 NGINX 的 docker 容器 充当反向代理 适用于 Windows 的 Docker 版本 1 12 5 9503 upstream
  • Cygwin 命令未找到在 .bashrc 357\273\277 中发现错误字符

    我是 Cygwin 的新手 我刚刚安装了它并尝试设置一些简单的环境变量 但是 当我打开命令 shell 时 出现错误 357 273 277 command not found 我发现一篇文章讨论了问题是什么以及如何 发现 隐藏的坏性格 h
  • 如何在InnoSetup中只允许安装特定组件?

    所以问题是这样的 我在这里问了一个问题 如何只允许安装到特定文件夹 我怎样才能稍微修改它 例如 我有 3 个文件要安装 其中 2 个是可选的 并且只有在某个文件 文件夹存在时才可以安装 如果不满足条件 我想将在列表中选择它们的选项灰显 先感
  • 双卡双待安卓sdk

    sdk 默认 有什么方法可以处理双卡吗 市场上有许多双卡双待的 Android 手机 我想要的是以编程方式更改默认的SIM卡 是否可以 从 Android 5 1 开始多卡支持已正式添加到Android SDK中 您可以通过以下方式访问有关
  • 使用 JQuery 从 Div 中删除 CSS

    在我的应用程序中 我有以下内容 displayPanel div live click function this css background color pink font weight bolder 当我点击一个 Div 时 该 Di
  • 删除美国州边界,在 ggplot2/geom_polygon 中创建轮廓区域

    我正在绘制下表 显示美国的多重耐药性趋势 按地区划分的 MDR 使用以下代码 states map m lt ggplot ncftrendsort aes map id region geom map aes fill ncftrends
  • Rails、Devise 和 Omniauth - 设置问题

    我正在尝试 再次 使用 Rails 4 devise 和omniauth 设置身份验证 我尝试按照这篇文章中的示例进行操作 Rails 4 Devise Omniauth 有多个提供商 我安装了这些宝石 gem devise gem omn
  • 相等比较在 TensorFlow 2.0 tf.function() 中不起作用

    继讨论之后TensorFlow 2 0 AutoGraphs 我一直在玩弄并注意到不平等比较 例如 gt and lt 直接指定 而相等比较则使用tf equal 这里有一个例子来演示 该函数使用 gt 运算符和效果很好当被调用时 tf f
  • 为什么在 jinja2 Python 中使用“|安全”[重复]

    这个问题在这里已经有答案了 我正在关注 Flask 教程 他在 jinja2 模板中使用 safe 为什么我们需要这个管道符号和安全 不使用 safe 它会打印所有 html 标签 通过使用 safe 它显示正确的格式 为什么会这样呢 下面
  • beforefieldinit 标志有什么作用?

    beforefieldinit 标志有什么作用 当我查看班级的 IL 时 我看到这个标志 但我不知道这个标志实际上在做什么 See 我的文章在这个问题上 基本上 beforefieldinit意味着 可以在引用任何静态字段之前的任何时候初始
  • ASP.NET Core 6 Web API 的集成测试抛出 System.InvalidOperationException

    我试图了解如何在 ASP NET Core 6 Web API 控制器上进行集成测试 我尝试过遵循所有guides 所以我可以找到帖子和建议 但由于某种原因 我不断遇到指南中未提及的错误 事件控制器测试 cs namespace UnitT