Как смоделировать реализованные методы тестируемого класса в Spring Boot с помощью Mockito - PullRequest
0 голосов
/ 29 января 2020

Я не уверен после долгих чтений о том, как тестировать класс ниже.

Я привел базовый c пример ... но предполагая, что метод класс / реализованный может создать более сложный объект (не только Строка, как показано ниже), как я могу смоделировать интерфейс, чтобы я мог ввести макет в класс для проверки поведения различных классов?

Например, в упрощенном виде ниже ... если длина ' При вызове класса getSayHelloLength () 'sayHello' превысило 500 символов, возможно, я хочу заявить, что выброшено HelloTooLongException.

/**
 * MyClass implements MyInterface.
 */
public class MyClass implements MyInterface {

    public int getSayHelloLength() {
        return sayHello().length();
    }

    //I want to change/Mock the return of the implemented interface.
    @Override
    public String sayHello() {

        //Do some magic and some code an eventually return something based upon 'input'
        // Magic
        // More magic.


        return "My Class to Test Says Hello!";
    }
}

Интерфейс:

public interface MyInterface {
    String sayHello();
}

I Я использую JUnit5:

class MyClassTest {

    @InjectMocks
    private MyClass myClass;

    @BeforeEach
    void setUp() {
    }

    @Test
    void getSayHelloLength() {
        //Mock the interface 'myClass' implements as to test various "hellos" outputs.
    }
}

1 Ответ

1 голос
/ 29 января 2020

Поскольку вы тестируете не интерфейс (нет кода для тестирования), а реализацию. Нет необходимости издеваться над интерфейсом. Вы не хотите издеваться над кодом, который вы тестируете в любом случае. Вы хотите высмеивать все, что использует код, который вы тестируете.

Итак, предположим, что часть 'Magi c' находится в другом классе, вы хотите высмеять этот. Если это не так, вы можете реорганизовать свой класс до тех пор, пока это не произойдет, потому что тогда он нарушает принцип единственной ответственности, поскольку делает магию c и говорит "привет", похоже, это совсем другие проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...