대역의 필요성

테스트 작성 시 외부 요인 필요한 경우

→ 테스트 작성 및 실행, 결과 예측 어려움

ex. 자동이체 정보 등록 기능과 카드번호 검사기

AutoDebitRegister 클래스 테스트

public class AutoDebitRegisterTest {
	private AutoDebitRegister register;
	
	@BeforeEach
	void setUp() {
		CardNumberValidator validator = new CardNumberValidator();
		AutoDebitInfoRepository repository = new JpaAutoDebitInfoRepository();
		register = new AutoDebitRegister(validator, repository);
	}
	
	@Test
	void validCard() {
		// 업체에서 받은 테스트용 유효한 카드번호 사용
		AutoDebitReq req = new AutoDebitReq("user1", "1234123412341234");
		RegisterResult result = this.register.register(req);
		assertEquals(VALID, result.getValidity());
	}
	
	@Test
	void theftCard() {
		// 업체에서 받은 도난 테스트용 카드번호 사용
		AutoDebitReq req = new AutoDebitReq("user1", "1234567890123456");
		RegisterResult result = this.register.register(req);
		assertEquals(THEFT, result.getValidity());
	}
}

⇒ 테스트 대상에서 의존하는 요인 때문에 테스트 어려운 경우 대역 이용해서 테스트


대역을 이용한 테스트

CardNumberValidator 대역