У меня есть проект MVC4 WebApi с маршрутизацией, которая работает правильно с необязательным параметром "id" в маршруте:
routes.Add(new ApiRouteInfo
{
Name = this.AreaName.ToLower() + "_readingsplans",
RouteTemplate = baseUrl + "/plans/readingalerts/{id}",
Defaults = new
{
area = this.AreaName.ToLower(),
controller = "ReadingAlerts",
id = RouteParameter.Optional
}
});
При выполнении фактического запроса маршрутизация работает, чтобы попасть в метод GetAll или Get в методах контроллера:
public HttpResponseMessage GetAll(BaseQueryFilter filter)
public HttpResponseMessage Get(int id)
Но в модульном тесте объект RouteTester всегда попадает в метод Get, а не в GetAll.
Работает:
Assert.AreEqual(ReflectionHelper.GetMethodName((ReadingAlertsController p) => p.Get(It.IsAny<int>())), routeTester.GetActionName());
Не удается:
Assert.AreEqual(ReflectionHelper.GetMethodName((ReadingAlertsController p) => p.GetAll(null)), routeTester.GetActionName());
Я попытался передать фактический объект фильтра вместо нуля, но это вообще не меняет результат.
Я знаю, что могу исправить это, создав два разных маршрута, но я немного сопротивляюсь, поскольку текущая маршрутизация работает для всего, кроме модульного теста.
Какие-либо предложения?