У меня есть класс (PriceSetter), который я тестирую с помощью Mockito, и у класса есть внутренняя зависимость (база данных). Я хочу смоделировать эту внутреннюю зависимость, а затем внедрить ее в класс, но эта зависимость не указана в моем конструкторе. Таким образом, Mockito автоматически пытается внедрить конструктор, и зависимость никогда не вводится.
Я пытался использовать @Mock для моего объекта базы данных и @InjectMocks для моего класса PriceSetter, но Mockito автоматически вызывает конструктор, и ему не удается внедрить мой макет базы данных, поскольку база данных не передается в конструктор.
class PriceSetter {
private Table priceTable;
public PriceSetter(Dependency d1, Dependency d2) {
this.d1 = d1;
this.d2 = d2;
}
}
@RunWith(MockitoJUnitRunner.class)
class PriceSetterTest{
@InjectMocks
private PriceSetter setter;
@Mock Table priceTable;
@Mock Dependency d1;
@Mock Dependency d2;
@Test
public void someTestMethod() {
when(priceTable.getItem(any())).thenReturn(Specified item);
setter.priceTable.getItem("item"); -> Doesn't return item specified by mocked behavior
}
}
Я ожидаю, что priceTable
будет введен, но он не введен. Только d1 и d2 вводятся через конструктор.