У меня есть метод в классе под названием FruitBasket
, который я хотел бы проверить, как так:Mockitio - возвращение нуля, когда ожидает издеваются в единичном испытании
// Method to test
public Fruit getFruit(String fruitName) {
Fruit fruit = new Fruit();
if(fruitExists(fruitName)) {
fruit = getFruitByName(fruitName);
}
else {
fruit.setFruitName(fruitName);
saveFruit(fruit);
fruit = getFruitByName(fruitName);
}
return fruit;
}
private Fruit getFruitByName(String fruitName) {
return fruitDao.getFruitByName(fruitName);
}
public boolean fruitExists(String fruitName) {
return fruitDao.fruitExists(fruitName);
}
я написал модульное тестирование этого метода следующим образом:
@Mock
FruitDao fruitDao;
@Mock
Fruit mockFruit;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testgetFruitMethod() {
FruitBasket fruitBasket = new FruitBasket (fruitDao);
Fruit apple = fruitBasket.getFruit("Apple");
when(fruitDao.fruitExists(anyString())).thenReturn(true);
when(fruitDao.getFruitByName(anyString())).thenReturn(mockFruit);
assertThat(apple, instanceOf(Fruit.class));
}
Однако испытание не выполняется с ошибкой утверждения. Был вызван экземпляр Fruit, но вместо него был возвращен нуль.
Может ли кто-нибудь выявить проблему, почему я получаю null?
Как 'apple' будет зависеть от вашего' when' заявления? –
Что делает конструктор 'FruitBasket'? – fge