【问题标题】:Unit testing ApiControllers with RouteAttribute使用 RouteAttribute 对 ApiController 进行单元测试
【发布时间】:2014-02-20 03:20:29
【问题描述】:

我以为在网络上进行的简单搜索结果却不止于此。

最接近解决方案的是第一个可以使用属性进行路由的解决方案:AttributeRouting not working with HttpConfiguration object for writing Integration tests

但是 ASP.NET Web Api 2 呢?

我的单元测试

HttpConfiguration config = new HttpConfiguration();
// config.MapHttpAttributeRoutes(); // This doesn't work. I guess there is needed some more plumbing to know what Controllers to search for attributes, but I'm lost here.
HttpServer server = new HttpServer(config);

using (HttpMessageInvoker client = new HttpMessageInvoker(server))
{
    using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Put, "http://localhost/api/accounts/10"))
    using(HttpResponseMessage response = client.SendAsync(request, CancellationToken.None).Result)
    {
        response.StatusCode.Should().Be(HttpStatusCode.Created);
    }
}

如何注入我的控制器,以便它读取控制器上的属性并设置路由,以便我可以实际进行一些测试?

【问题讨论】:

    标签: c# unit-testing asp.net-mvc-routing asp.net-web-api2


    【解决方案1】:

    这太荒谬了......我用这个来工作:

    config.MapHttpAttributeRoutes();
    config.EnsureInitialized();
    

    所以基本上,这会运行config.MapHttpAttributeRoutes() 的配置的初始化。我想,我会认为这是自动完成的。

    但现在它起作用了,我很高兴。

    有关此问题的更多信息,请参阅:http://ifyoudo.net/post/2014/01/28/How-to-unit-test-ASPNET-Web-API-2-Route-Attributes.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-08
      • 2020-03-07
      • 2017-11-22
      • 2010-10-14
      • 2020-05-01
      • 1970-01-01
      • 2013-08-10
      • 2019-05-20
      相关资源
      最近更新 更多