【发布时间】:2019-09-28 16:13:13
【问题描述】:
我目前正在使用 xUnit 编写集成测试,速度如此之快,我只尝试为我的 AuthController 编写一个测试来检查身份验证是否有效(顺便说一句,它有效。我只想进行测试)。
我不知道我设置错了什么,但每次我运行测试时都会收到 500 内部服务器错误:
Failed AuthControllerIntegrationTests.CanLogin
Error Message:
System.Net.Http.HttpRequestException : Response status code does not indicate success: 500 (Internal Server Error).
[xUnit.net 00:00:02.19] AuthControllerIntegrationTests.CanLogin [FAIL]
Failed AuthControllerIntegrationTests.CanLogin
Error Message:
System.Net.Http.HttpRequestException : Response status code does not indicate success: 500 (Internal Server Error).
我的测试如下所示:
[Fact]
public async Task CanLogin()
{
var webHostBuilder =
new WebHostBuilder()
.UseEnvironment("Development")
.UseConfiguration(new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build())
.UseStartup<Startup>();
using (var server = new TestServer(webHostBuilder))
using (var client = server.CreateClient())
{
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
object password = new {
password = "password"
};
var httpResponse = await client.PostAsJsonAsync("/api/authenticate", password);
httpResponse.EnsureSuccessStatusCode();
}
}
我什至不知道如何调试这个...我在 Visual Studio 代码调试器中看到的只是 500 响应。哈普
编辑: 这是我要测试的控制器操作:
[AllowAnonymous]
[HttpPost("authenticate")]
public IActionResult Authenticate([FromBody]AuthDTO input)
{
var token = _authService.Authenticate(input.Password);
if (token == null)
return BadRequest(new { message = "Incorrect password!" });
return Ok(new
{
token = new JwtSecurityTokenHandler().WriteToken(token)
});
}
我尝试修改控制器以始终返回 Ok Http 响应,但在测试中我仍然收到 500 内部服务器错误。
【问题讨论】:
-
你能分享一下你的 Action 的代码,它属于 Authenticate 控制器中的 Post 方法吗?
-
我已经添加了要测试的控制器动作。
-
哦,等等,谢谢!!我太笨了……我发错了路线。
-
我不知道为什么它会返回 500 错误
标签: asp.net asp.net-core asp.net-core-2.0 xunit.net asp.net-core-testhost