.net - 从 xUnit 调试 .NET Core API
问题描述
我已经开发了两个基于 .NET Core 2.1 的项目。
- 网络API
- xUnit
WebAPI 使用 IIS 作为托管平台。xUnit 使用 HttpClient 类连接到 WebAPI 以使用 http。
我尝试连接到w3wp服务以捕获控制器中的 Get 方法,但没有成功。另外,我在WebAPI项目中启动了另一个环境并运行了Debug,但这并没有帮助。
谁知道问题出在哪里以及如何解决?
解决方案
关于如何做到这一点,docs.microsoft.com 上有一个很好的指南:https ://docs.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-2.1
基本上,您需要将 Microsoft.AspNetCore.Mvc.Testing 包安装到您的测试项目中,并在您的测试项目中从 WebApplicationFactory 派生一个“测试应用程序工厂”类。然后在每个测试类中,您需要创建该类的一个实例,然后使用 WebApplicationFactory.CreateClient 来获取 HttpClient 的一个实例。然后根据需要使用 HttpClient 实例调用 API 端点。
本质上,WebAPI 应用程序将与您的测试在同一进程中运行,这大大简化了调试。
您可能还想为您的被测应用程序添加一个“测试”环境配置文件(例如 appsettings.Test.json),并将 WebApplicationFactory 配置为使用相同的环境进行测试运行,这样测试运行就不会触及您的开发环境(包括数据库),并在“测试应用工厂”类中编写一些代码来重新创建/清理测试中使用的测试数据库或其他存储。
推荐阅读
- entity-framework - 更新条目时出错
- asp.net-core - 基于角色的授权在 ASP.NET Core 3.1 中不起作用
- javascript - 如何在节点 js 中使用 bcrypt 加密密码?
- nullpointerexception - java.lang.NullPointerException 使用 RecyclerView,如何解决?
- python - 在 Raspberry Pi 上自动更新 python 包
- mysql - 测试简单的 Node、Express、mySQL API
- mongodb - 如何使用子文档更新文档,或者如果找不到则创建新文档
- javascript - 不和谐.js | TypeError:无法读取未定义的属性“声音”
- c++ - 将模板化函数作为 std::function 传递并稍后选择模板参数
- jquery - 此路由不支持 POST 方法。支持的方法:使用 laravel/ajax 的 GET、HEAD