Возможно ли @InjectMocks во временный экземпляр объекта в методе класса? - PullRequest
0 голосов
/ 17 июня 2020

Рассмотрим фрагмент кода ниже:

@ExtendWith(MockitoExtension.class)
public class MyTest {
    @InjectMocks ClassA cA;
    @Mock Helper hlpr;

    @Test
    void doStuff() {
        ClassB cB = new ClassB(cA);
        ...
    }
}

и

public class ClassA {
    public ClassA() {
        this.myattribute = (new Helper()).action;
    }
}

Итак, как видите, мне просто нужен класс Helper для его функции, поэтому он не добавляется как частная переменная в ClassA. Любой обходной путь без изменения ClassA?

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Mock используется для имитации зависимостей класса, который вы хотите протестировать (помеченный @InjectMocks), для проведения модульного тестирования. Итак, если вы хотите написать модульный тест для своего класса A, кажется, что вам следует @Mock myattribute

0 голосов
/ 18 июня 2020

Вы должны смотреть на насмешку myattribute, а не на класс Helper. Есть ли у myattribute сеттер, который вы можете использовать для теста? Я думаю, что это способы обойти сеттер, использующий что-то вроде powemock, но эти проблемы обычно указывают на проблему с вашей реализацией

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