내 관리 영역에 존재하는 웹 API 경로를 테스트하려고합니다. 영역 webapi 경로가 해결되지 않습니다.
이
은 해당 지역에서 경로 정의가[HttpPut]
[Route("timezone/put/{timezone}", Name = "PutTimeZone")]
[AllowAnonymous]
[ResponseType(typeof(void))]
public IHttpActionResult PutTimeZone(string timezone)
{
/*Action body*/
}
내가 너무 [RoutePrefix ("관리자/기타"를) 여기서
내 경로 테스트
처럼 경로 접두사가있다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 영역을 사용하는 경우, 다음과 같은 당신이 네임 스페이스의 표준 레이아웃을 사용할 때, 지역 이름이 당신의 컨트롤러 유형 이름에서 추출 및 지역에 대해 테스트됩니다 route tester wiki page
읽어 경로에 의해 선택. 예 : 컨트롤러의 정규화 된 유형 이름이
MyWebApp.Areas.Blog.CommentController
인 경우 예상 지역 이름은 이 "블로그"가됩니다.
하지만 솔직하게 말해서, 내 테스트를 통과하기 위해 무엇을해야하는지에 대한 단서를 제공하지 않습니다. 내 질문은 무엇을 놓치고 있습니까?
하지만 라우트 영역은 Asp.net Mvc 용으로 특별히 의미가 있으며 Webapi 변형이 아닌 것 같습니다. webapi 컨트롤러 – Cizaphil
에서 시험해 보았으므로 테스트는 여전히 동일한 예외 메시지와 함께 실패합니다 위. – Cizaphil
나는 그것을 깨닫지 못했고 그 대답이 무엇인지 잘 모릅니다. 미안합니다. 지금까지이 영역 안의 ApiController를 사용해 본 적이 없습니다. 마음에 떠오르는 다른 점은 ApiController의 네임 스페이스가 무엇인가? 당신이 올바르게 제공 한 위키 문서를 이해한다면 예상 네임 스페이스는'YourProjectName.Areas.Administration'입니다. 그것을 확인할 수 있습니까? – davke