【发布时间】:2018-11-28 07:40:57
【问题描述】:
我正在开发一个 Web API,在某些情况下会以 500 响应(我知道设计很丑,但对此无能为力)。在测试中有一个包含 AspNetCore.TestHost 的 ApiFixture:
public class ApiFixture
{
public TestServer ApiServer { get; }
public HttpClient HttpClient { get; }
public ApiFixture()
{
var config = new ConfigurationBuilder()
.AddEnvironmentVariables()
.Build();
var path = Assembly.GetAssembly(typeof(ApiFixture)).Location;
var hostBuilder = new WebHostBuilder()
.UseContentRoot(Path.GetDirectoryName(path))
.UseConfiguration(config)
.UseStartup<Startup>();
ApiServer = new TestServer(hostBuilder);
HttpClient = ApiServer.CreateClient();
}
}
当我从这个夹具使用 HttpClient 调用 API 端点时,它应该以 500 响应,而不是我得到了在测试控制器中引发的异常。我知道在测试中它可能是一个不错的功能,但我不希望这样 - 我想测试控制器的实际行为,它返回内部服务器错误。有没有办法重新配置 TestServer 以返回响应?
控制器动作中的代码无关紧要,可以是throw new Exception();
【问题讨论】:
标签: c# asp.net-core integration-testing xunit.net