서비스 계층에서 저장소 패턴을 사용하는 보통 복잡도의 asp.net mvc 응용 프로그램을 상상해보십시오. 이제 우리가 광범위한 의존성을 가지고 어떤 행동을한다고 상상해보십시오. 인위적인 예를 들자면 다음 CustomerController는 다음 기준에 모두 부합하는 고객을 표시하는 데 필요한 :복잡한 개체 그래프를 테스트하는 단위
- 고객의 결제 또는 배송 주소는 플로리다에
- 고객은
- 고객 (ClubMembershipService 사용) VIP 클럽에 이 적어도 하나의 이전 주문
- 고객은 모델 년에 적어도 하나 개의 자동차를 소유하고 2,005 이상
- 자동차는 몇 가지로, 등등
- 및 리콜 됐어요 부분이있다 더 1 대 1 또는 제 3 자 API 호출
이 범위의 각 테스트에는 엄청난 양의 시드/모의 데이터가 필요합니다. 다음 테스트에서는 비슷하지만 상당히 다른 데이터 집합이 필요할 것입니다. 컨트롤러 레벨에서의 테스트에서 6 개의 서비스를 주입해야하고, 8 개의 저장소를 해당 서비스에 주입해야한다고 가정 해 봅시다.
테스트를 어떻게 관리 할 수 있습니까? 딥 객체 그래프를 탐색하고 모의 (또는 콘크리트) 리포지토리가 각 테스트에서 30 줄의 설치 코드없이 유효하고 일관된 데이터를 제공하도록하려면 어떻게해야합니까?
이 테스트 데이터베이스를 사용하여 순수 통합 테스트한다면, 나는 다음해야 할 수 있습니다
- 몇 고객 기록
- 몇 주소 기록을; 다수 주소 기록을 가진 몇몇 고객; 누구의 선적 주소가 플로리다에 있는지; 청구서 수신 주소가 플로리다에있는 사람
- 약간의 주문
- 일부 "CustomerCar"레코드; 자동차 중 하나에 2005 년 또는 그 이후 모델이 있어야합니다.
- 일부 "CarPartRecall"레코드; 이들 중 일부는, 로직 나는 그것이 속성으로 고객 개체에 이러한 기준을 부착 적합 할 수 있습니다 이해
/를 CustomerCar 기록 추가 기준에 대한 등등
자동 수정이 제안되었습니다. 조롱 프레임 워크와 조명기 팩토리 사이의 십자가처럼 보입니다 (factoryGirl에서 레일을위한 것처럼). 나는 그것이 customer.firstName과 같은 몇몇 속성 값을 자동으로 공급함으로써 초기화 코드를 더 간결하게 만들 것이라고 생각하지만 상대적으로 작은 이득을 느낀다. AutoFixture를 사용하여 다른 사람의 경험을 듣고 싶습니다.
이 질문은 구체적인 예를 통해 도움이 될 수 있습니다. 나에게 이것은 설계 문제가 아닌 단위 테스트 문제로 들린다. 동일한 방법으로 6 개의 서비스와 8 개의 저장소와 상호 작용해야하는 경우이 방법이 가장 많이 수행됩니다. –
나는 구체적인 예를 제공한다고 생각했다. 이 예에서 많은 다른 집계 루트에서 데이터가 필요합니다. 예 : CustomerService, AddressService ClubMembershipService, OrderService, CarService 등일 수 있습니다. 예를 들어 컨트롤러에서 내 글 머리 기호 목록의 모든 조건과 일치하는 고객 만 표시해야합니다. – betitall
나는 내가 불분명하다고 생각한다. 나는 코드 예제를 의미했다. –