저는 리포지토리 레이어, DTO 서비스 레이어 및 WebAPI 레이어가있는 webAPI 응용 프로그램이 있습니다. WebAPI는 DTO 호출 리포지토리를 호출합니다.WebAPI 컨트롤러를 테스트하는 방법은 무엇입니까?
public class RepositoryService : IRepositoryService
{
private readonly DbContext _db;
public RepositoryService(string connectionString)
{
_db = new DbContext(connectionString);
}
public RepositoryService()
{
_db = new DbContext();
}
을 그리고 내 DTO 서비스는 다음과 같이 시작 :
내 저장소는 다음과 같이 시작
public class DtoService : IDtoService
{
private readonly RepositoryService _repository;
public DtoService(string connectionString)
{
_repository = new RepositoryService(connectionString);
}
public DtoService()
{
_repository = new RepositoryService();
}
내 DbContext는 다음과 같습니다 : 지금까지
public DbContext() : base("name=TestConnection")
{
}
public DbContext(string connectionString) : base(connectionString)
{
}
이, 테스트를 위해 응용 프로그램을 실행할 때 사용할 연결 문자열을 선택적으로 정의하도록 허용했습니다.
첫 번째 질문 :이 방법이 괜찮은 것 같습니까?
이제 WebAPI 레이어가 생겼으므로 컨트롤러 클래스가 하나만있는 것은 아닙니다. 여러 컨트롤러가 있습니다. 각 컨트롤러에 대해 이러한 생성자를 검토하고 구현하는 방법에 대해 생각하고 있지만이 작업을 수행하는 더 좋은 방법이 있어야합니다. 뭔가 이것이 의존성 주사가 작용하는 곳이라고 알려주지 만 잘 모르겠습니다.
나는 이런 식으로 뭔가를 할 수 : 내 테스트에서
위 내 서비스에 대해 가지고있는 것처럼
- 각 컨트롤러에 대한 생성자를 작성,
VAR 등의 각 컨트롤러의 최대 새로운 인스턴스 accountController = new AccountController (connectionStringForTesting)
실용적이지 않기 때문에 ...
두 번째 질문 : 실용적인 접근 방식은 어떻게 생겼을까요?