【发布时间】:2020-06-15 14:57:08
【问题描述】:
我正在尝试将我的 API 和集成测试从 .NET Core 2.2 迁移到 3.1。 考虑到 API prj 的所有工作正常,迁移和违反 Microsoft 更改调整后。 我用邮递员试过了。
此时我尝试迁移我的集成测试项目,但迁移后所有带有 [FromBody] 参数的 http 调用都会出错,因为 fromBody 参数始终为空。
这里有更多信息:
.NET Core 2.2 代码:
IWebHostBuilder webHostBuilder = Program.CreateBuilder()
.UseEnvironment(TestEnvironmentName.Get(inMemory: true))
.ConfigureEntityFrameworkForTesting(fixture);
_server = new TestServer(webHostBuilder);
var client = _server.CreateClient();
_client = new FluentClient("http://a", client);
_client.SetHttpErrorAsException(false);
_testHost = TestHostBuilder.Create()
.ConfigureServices(services => services.AddTestServiceBus(_server.Host.Services))
.Build();
_testHost.Run();
.NET Core 3.1 代码:
var hostBuilder = new HostBuilder()
.ConfigureWebHostDefaults(webHost =>
{
// Add TestServer
webHost.UseTestServer();
webHost.UseEnvironment(HostTestEnvironmentName.Get(inMemory: true))
.ConfigureEntityFrameworkForTesting(fixture)
.UseStartup<Startup>();
});
var host = hostBuilder.Start();
var client = host.GetTestClient();
_client = new FluentClient("http://a", client);
_server = host.GetTestServer();
我已经:
- 检查测试使用的 https 客户端是否包含“ContentType”作为 json。
- 尝试移除 fluent 客户端并使用“System.Net.Http.HttpClient”。
现在我怀疑我在调用 host.GetTestServer() 时发现的这条消息。但这不是一个真正的错误,它不会破坏我的运行时,我只是通过快速观察 _server 变量来看到它。
错误消息:“未使用 IWebHostBuilder 调用 TestServer 构造函数,因此 IWebHost 不可用。” QuickWatchImage
我不太确定这是否与我的问题有关,我没有想法。
【问题讨论】:
-
您找到解决方案了吗?
标签: c# unit-testing asp.net-core asp.net-web-api dotnet-httpclient