현재 팀에서 단위 테스트를 허용하도록 코드 디자인을 수정하는 것이 코드 냄새인지, 또는 코드 냄새가 나지 않고 어느 정도까지 할 수 있는지에 대한 논쟁이 있습니다. 우리는 단지 다른 모든 소프트웨어 개발 회사에 존재하는 관행을 제자리에두기 시작했기 때문에 발생했습니다.
특히, 우리는 매우 얇은 웹 API 서비스를 갖게 될 것입니다. 주요 책임은 웹 요청 / 응답을 마샬링하고 비즈니스 로직을 포함하는 기본 API를 호출하는 것입니다.
한 가지 예는 인증 방법 유형을 반환하는 팩토리를 만들 계획입니다. 우리는 그것이 인터페이스가 될 구체적인 유형 이외의 다른 것을 기대하지 않기 때문에 인터페이스를 상속받을 필요가 없습니다. 그러나 웹 API 서비스를 단위 테스트하려면이 팩토리를 조롱해야합니다.
이것은 본질적으로 우리가 (생성자 또는 설정자를 통해) DI를 받아들이도록 Web API 컨트롤러 클래스를 설계한다는 것을 의미합니다. 즉, DI를 허용하고 우리가 필요로하지 않는 인터페이스를 구현하기 위해 컨트롤러의 일부를 설계하고 있음을 의미합니다. 이런 식으로 컨트롤러를 디자인 할 필요가 없도록 Ninject와 같은 타사 프레임 워크를 사용하지만 여전히 인터페이스를 만들어야합니다.
팀의 일부는 테스트를 위해 코드를 디자인하는 것을 꺼려합니다. 단위 테스트를 원한다면 약간의 타협이 필요한 것 같습니다. 그러나 그들의 우려가 어떻게 완화되는지 확실하지 않습니다.
분명히 이것은 아주 새로운 프로젝트이므로 단위 테스트를 가능하게하기 위해 코드를 수정하는 것은 아닙니다. 단위 테스트가 가능하도록 작성할 코드를 설계하는 것입니다.