를 찾을 수 없습니다 : 나는 WebApi 프로젝트에 대한 몇 가지 단위 테스트를 설정하지만 계속 노력하고 http://blogs.msdn.com/b/youssefm/archive/2013/01/28/writing-tests-for-an-asp-net-webapi-service.aspx단위 테스트 WebApi 컨트롤러는 메모리 (In-Memory) HttpServer에 사용 - 없음 HTTP 자원은 유세프에 의해이 블로그 글에서
이 얻을 :
"No HTTP resrouce was found that matches the request URI http://localhost/api/Filter"
테스트 케이스 :
[TestMethod]
public void TestMethod1()
{
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}");
HttpServer server = new HttpServer(config);
using (HttpMessageInvoker client = new HttpMessageInvoker(server))
{
using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/api/Filter"))
{
request.Content = new StringContent(ValidJSONRequest);
request.Content.Headers.Add("content", "application/json");
using (HttpResponseMessage response = client.SendAsync(request, CancellationToken.None).Result)
{
Assert.AreEqual(ValidJSONResponse, response.Content.ReadAsStringAsync().Result);
}
}
};
}
NB. ValidJSONRequest/ValidJSONResponse는 JSON 객체가 포함 된 문자열입니다.
IIS에서 실행되는이 라우팅은 완벽하게 작동하며 예상대로 작동하지만 나에게 무슨 일이 벌어 질지 예측할 수는 없습니까? 내가 뭘 놓치고 있니?
블로그 게시물에 표시된대로 'HttpServer'로 테스트 할 점을 잘 모르겠습니다. 메모리 서버가 컨트롤러 메소드를 실행하거나 요청을 라우트하도록 구성되지 않았기 때문에 무의미한 것처럼 보입니다. 라우트가 설정되지 않아 응답하는 것이 좋습니다. –
@adrift - 그다지 도움이되지 않습니다. 이 경우 서비스는 단순히 JSON 객체에 대한 변환 작업을 수행하고 (거의 사용하지 않음) 컨트롤러의 논리를 독립적으로 테스트하는 것은 무의미합니다. 게다가, 반드시 config.Routes.MapHttpRoute ("DefaultApi", "api/{controller}/{id}"); 경로를 구성해야합니까? 컨트롤러 메소드와 라우팅 요청을 재미있게 메모리 서버에 어떻게 구성합니까? –
유닛 테스트는 코드를 독립적으로 테스트해야합니다. 컨트롤러 메소드를 여기에서 단위 테스트하려고하지 않는다면 무엇을 테스트하려고합니까? –