【发布时间】:2016-08-11 13:14:59
【问题描述】:
我正在尝试测试我的管理区域中存在的 Web api 路由。
这是该地区的路线定义
[HttpPut]
[Route("timezone/put/{timezone}", Name = "PutTimeZone")]
[AllowAnonymous]
[ResponseType(typeof(void))]
public IHttpActionResult PutTimeZone(string timezone)
{
/*Action body*/
}
我有一个这样的路由前缀 [RoutePrefix("admins/misc")]
这是我的路线测试
const string route = "/admins/misc/timezone/put/-120";
RouteAssert.HasApiRoute(_httpConfiguration, route, HttpMethod.Put);
_httpConfiguration.ShouldMap(HttpMethod.Put, route)
.To<MiscApiController>(HttpMethod.Put, x => x.PutTimeZone("-120"));
当我运行测试时,我得到MvcRouteTester.Assertions.AssertionException : Expected 'Administration', got no value for 'area' at url '/admins/misc/timezone/put/-120'.
如果你使用的是 MVC 领域,那么只要你使用标准 命名空间的布局,区域名称将从您的 控制器类型名称并针对路由选择的区域进行测试。 例如如果您的控制器的完全限定类型名称是
MyWebApp.Areas.Blog.CommentController那么预期的区域名称将 成为“博客”。
但坦率地说,它并没有给我任何线索,让我知道该怎么做才能让我的测试通过。我的问题是我错过了什么?
【问题讨论】:
标签: asp.net-mvc asp.net-web-api asp.net-mvc-routing