4
비즈니스 계층 인터페이스에 의존하지 않고 내 웹 API에서 통합 테스트를 수행하고 싶습니다. 이 작업이 실행웹 API 통합 테스트를위한 비즈니스 계층 모의
:
1) 내가 올바른 상태 코드가 반환되는 것을 주장 할)을 _service 개체를 조롱 그냥
2
라고되어 있는지 확인하려면번호 2는 아무런 문제가 없지만 APC 컨트롤러를 수동으로 만들거나 제어하지 않으면 _service 개체 (ISchoolyearService)를 조롱 할 수 있습니다. 이는 컨트롤러 테스트에서 수행되는 작업이기 때문입니다. 하지만 내 API를 단위 테스트하고 싶지 않아!
[RoutePrefix("api/schoolyears")]
public class SchoolyearController : ApiController
{
private readonly ISchoolyearService _service;
public SchoolyearController(ISchoolyearService service)
{
_service = service;
}
[Route("")]
[HttpPost]
public HttpResponseMessage Post([FromBody]SchoolyearCreateRequest request)
{
_service.CreateSchoolyear(request);
return Request.CreateResponse(HttpStatusCode.Created);
}
특정 통합 테스트 환경에 배포합니까? 특정 테스트 env에 IntegrationTesting = true를 지정하고 IntegrationTesting == true 일 때 작성한 실제 구현 또는 모의 서비스간에 전환하는 'ISchoolyearService'에 대한 주입을 정의 할 때 Web.Config에 키를 간단히 추가 할 수 있습니다. – Karhgath
"특정 통합 테스트 환경에 배포"? 요 호스트 호스팅 테스트 대 자기 호스팅 말합니까? 나는 HttpServer와 HttpClient를 사용하여 통합 테스트를하고있다. 그러나 어쨌든 나는 그것이 나를 도울 수있는 당신의 제안을 이해하지 못한다. – Elisabeth
글쎄, 실제 서비스를 ISchoolyearService에 주입하는 데 IoC를 사용합니까? Web.Config의 키에 따라 모의 객체 또는 실제 서비스간에 전환 할 수 있습니다. 모의 객체를 만드는 방법에 관한 문제인 경우 Mook : http://www.nuget.org/packages/MOQ와 같이 손으로 또는 많은 조롱 프레임 워크를 사용하여 수행 할 수 있습니다. 어쩌면 당신은 당신의 문제에 대해 구체적으로 가르쳐 줄 수 있을까요? – Karhgath