>Java >java지도 시간 >Mockito를 사용하여 슈퍼클래스의 메서드 호출을 모의하는 방법: 실용 가이드

Mockito를 사용하여 슈퍼클래스의 메서드 호출을 모의하는 방법: 실용 가이드

Linda Hamilton
Linda Hamilton원래의
2024-11-01 04:42:02849검색

How to Mock a Method Call from a Superclass with Mockito: A Practical Guide

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.