【问题标题】:ASP.NET integration test - TestHost always return 500 Internal server errorASP.NET 集成测试 - TestHost 总是返回 500 内部服务器错误
【发布时间】: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


【解决方案1】:

问题只是我是个笨蛋,我试图将请求发布到/api/authenticate而不是/api/auth/authenticate

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多