자체 호스트 구성 기반 통합 테스트 실행 방법을 이해하려고합니다.메모리 HTTP 서버 Asp.net WebAPI
아래 코드에서 내 구성을 WebApiConfig에 등록해야합니까? 등록이나 차이는 없습니다.
전체 파이프 라인이 실제로 테스트되었거나 환상입니까? 이후, 내가 여기에서했던 것처럼 내 자신의 것을 선언하는 대신 내 API에 정의 된 설정과 경로를 사용하지 않는다면 아마도 전체 pipleine을 테스트하지 않을 것입니다.
API를 완전히 테스트 할 수있는 방법이 있습니까? 아래의 코드는 클라이언트 (예 : SelfHosting 등)와 같은 많은 것들을 테스트하는 것입니다. 이것은 나에게 잔인한 것처럼 보인다. 어떤 아이디어?
var config = new HttpSelfHostConfiguration("http://localhost:9090/");
config.Routes.MapHttpRoute("Default", "{api}/{controller}/{id}", new { id = RouteParameter.Optional });
config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
MyApiProject.WebApiConfig.Register(config);
using (var server = new HttpSelfHostServer(config))
{
server.OpenAsync().Wait();
using (var client = new HttpClient())
{
using (var response = client.PostAsync("http://localhost:9090/api/login",
new FormUrlEncodedContent(new List<KeyValuePair<string,string>> { new KeyValuePair<string, strin("Foo","Bar)}), CancellationToken.None).Result)
{
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
}
using (var response = client.GetAsync("http://localhost:9090/api/login").Result)
{
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
}
}
server.CloseAsync().Wait();
}
나는 단위 테스트를보고 있지 않다. 그들은 당신이 말한 것처럼 분리되고 목표 화된다. 질문에서 언급 한 테스트에서 API에서 지정한 구성을 사용하는 올바른 방법은 무엇입니까? –
동일한 코드를 호출하면 모든 경로와 다른 것들을 추가 할 수 있습니다. 나는'MyApiProject.WebApiConfig.Register (config);'가 그렇게하고 있다고 믿는다. –