Mockito 과제 극복: 슈퍼클래스에서 메서드 호출 모의
Java 모의 프레임워크인 Mockito는 메서드 호출을 격리하기 위한 강력한 도구를 제공합니다. 테스트 중. 그러나 특정 시나리오에서는 특히 상속을 처리할 때 특정 호출만 모의해야 합니다.
다음 클래스 계층 구조를 고려하세요.
<code class="java">class BaseService { public void save() {...} } public Childservice extends BaseService { public void save(){ //some code super.save(); } } </code>
목표는 super.save(에 대한 호출만 모의하는 것입니다. )를 ChildService 클래스에 추가하고 첫 번째 호출에서는 원래 메서드 호출을 그대로 유지합니다.
한 가지 접근 방식은 전략적으로 Mockito의 spy() 메서드를 사용하여 ChildService 클래스의 모의 클래스를 만드는 것입니다. super.save()에서 호출되는 BaseService 클래스의 verify() 메서드를 스터빙하여 원치 않는 메서드 호출을 효과적으로 방지합니다.
<code class="java">class BaseService { public void validate(){ fail(" I must not be called"); } public void save(){ //Save method of super will still be called. validate(); } } class ChildService extends BaseService{ public void load(){} public void save(){ super.save(); load(); } } @Test public void testSave() { ChildService classToTest = Mockito.spy(new ChildService()); // Prevent/stub logic in super.save() Mockito.doNothing().when((BaseService)classToTest).validate(); // When classToTest.save(); // Then verify(classToTest).load(); }</code>
이 접근 방식은 super.save(에 대한 호출을 효과적으로 격리합니다. ) 첫 번째 호출에 대해 원래 메서드 호출을 허용하는 동안. 이를 통해 테스트는 정밀 조사를 통해 원하는 방법에 특히 초점을 맞춥니다.
위 내용은 Mockito를 사용하여 슈퍼클래스의 메서드 호출을 모의하는 방법: 실용 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!