내 컨트롤러의 방법으로 라우팅을 테스트하려고합니다.컨트롤러 라우팅, HttpRequestMessage를 사용하여 데이터를 게시하는 방법
[HttpPost]
public PlaylistItemDto Create(PlaylistItemDto playlistItemDto)
[HttpPost]
public IEnumerable<PlaylistItemDto> CreateMultiple(List<PlaylistItemDto> playlistItemDtos)
내가했다 : 내 컨트롤러는 다음 두 서명 사이에 결정을 내릴 수 있도록 메시지와 함께 콘텐츠를 게시 할 수 있어야합니다
[Test]
public void POST_PlaylistItem_Should_route_to_PlaylistItemController_Create_method()
{
var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/PlaylistItem/");
var config = new HttpConfiguration();
WebApiConfig.Register(config);
var route = Helpers.RouteRequest(config, request);
route.Controller.Should().Be<PlaylistItemController>();
route.Action.Should().Be("Create");
}
: 나는 다음과 같은 단위 테스트있어 일부 리소스를 살펴보면 async + HttpClient, http://www.asp.net/web-api/overview/web-api-clients/calling-a-web-api-from-a-net-client#PostingResource을 사용하여 예제를 찾았지만 기본적인 작업을 수행 할 때까지 익숙하지 않은 기술로 예제를 과도하게 작성하는 데 열중하지 않았습니다. HttpClient를 사용하여 컨트롤러에 메시지를 쉽게 보낼 수 없었습니다/서버가 실행되고 있지 않은 것처럼 행동했습니다.
것은이는 "둘 사이에 결정을 할"것 컨트롤러 아니다이며, 어디에서 오는지. ASP.NET 웹 API의 라우팅 인프라입니다. 당신은 (App_Start에서) 웹 API의 라우팅을 구성 했으므로 - HTTP 컨텍스트 나 서버 아키텍처가 없기 때문에 어떤 메소드를 호출해야하는지 알 수 없기 때문에, 실제로 찾고있는 것은 통합 테스트뿐입니다. 우리가 라우팅을 테스트 할 준비 웹 서버에 우리는 단지 스크립트 (wget과 또는 셀레늄, 또는 뭔가) HTTP 요청을 올바르게 발생합니다. –