서비스 또는 사업체라는 사실에 동의하는지 확인하십시오.
서비스는 일반적으로 비즈니스 엔티티 집합을 사용하여 일부 작업을 완료하고 자체적으로 내구성 데이터를 유지하지 않는다는 점에서 인식됩니다.
비즈니스 엔티티는 문제가있는 도메인의 단위로, 개념적으로 유지하고자하는 것입니다.
서비스 인 경우 서비스 구성시 종속성을 주입해야합니다. 공공이면 MyService (IFileObject)
주에서 건설
: VAR 서비스 = 새로운이면 MyService (MyRealFile)
테스트 설정으로 구성
: VAR 서비스 = 새로운이면 MyService 일반적으로는이 같은 생성자를 가질 수있다 (MyMockedFiled)
테스트중인 항목이 실제로 비즈니스 엔터티라는 것을 알게되면 엔터티에 종속성을 부여하지 않아야합니다. 일반적으로 한 단계 뒤로하고 자신과 비즈니스 엔터티간에 Service 클래스를 구성합니다.이 서비스는 명시 적으로 비즈니스 엔티티에 필요한 모든 데이터를 전달합니다. 귀하의 경우, 이것은 서비스가 파일을 읽음으로써 배우기로되어있는 것을 무엇이든 제공한다는 것을 의미합니다.
따라서 서비스는 파일 시스템에 대한 종속성을 가지며 다른 (전용) 파일 판독기 비즈니스 엔티티를 사용하여 파일을 읽을 수도 있습니다. 시스템에서 다른 곳에서 사용하는 경우 사업체가 불량 종속 호출을하는 것을 결코 원하지 않습니다. 그들의 코드는 컨텍스트 바운드가됩니다. 이것은 당신이 피하고 싶은 것입니다. 비즈니스 관계는 빠르며, 분리되고, 정의되고 반응 적이어야합니다.
단위 테스트는 서비스에 의존해야하며, 주입에 의한 의존성이있을 수 있습니다. 당신이 사업체를 단위 테스트하고 있다는 것을 알게된다면, 당신은 서비스 수준이 부족합니다.
다음 문제는 조롱 문제가 아닙니다. 그것이 작동하기 때문에 –