【问题标题】:IntegrationTest controllers with .net core 2.0 on web api在 Web api 上使用 .net core 2.0 的集成测试控制器
【发布时间】:2018-02-15 08:33:27
【问题描述】:

我刚刚使用 .net core 2.0 创建了一个空的 web api 项目。 我有一个默认控制器,现在我想创建一个集成测试。

[Route("api/[controller]")]
public class ValuesController : Controller
{
    // GET api/values
    [HttpGet]
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }
}

目标是在集成中自己托管然后输入url api/values 并检查返回。

注意:我只使用 wep api 2 和 owin,这很容易做到。但是下面的链接:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/owin 说.net core 应用程序不应该使用owin,那么我们应该使用什么以及如何使用呢?

【问题讨论】:

  • 为什么不从控制器调用方法?
  • 因为如果我实例化控制器并直接调用 Get(),它不会测试路由以及在 Http GET 上调用的事实。那将更像是一个单元测试。
  • 谢谢,但不是真的,因为它适用于 Web API 2,它是 UnitTesting。我对 .net core 2.0 的集成测试很感兴趣。

标签: c# integration-testing asp.net-core-2.0


【解决方案1】:

查看使用 ASP.NET Core 2.0 进行集成测试的官方文档:https://docs.microsoft.com/en-us/aspnet/core/testing/integration-testing

主要思想是创建一个TestServer 实例,其中WebHostBuilder 配置有您的Startup 类。然后您可以从TestServer 获取HttpClient 实例来调用您的自托管api

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 2018-01-28
    • 2021-07-05
    • 2020-08-18
    • 2018-05-31
    相关资源
    最近更新 更多