0
Вот мой тест:JUnit модульное тестирование Исключение нулевого указателя вместо пользовательского исключения
@Test(expected = NoItemsInStockException.class)
public void cantTakeItemIfNoneInStock() throws NoItemsInStockException {
User user = new User();
user.setEmail("[email protected]");
user.setDebt(0);
Item item = new Item();
item.setId(1L);
item.setPrice(10);
item.setQuantity(0);
Mockito.when(userRepository.findByEmail(user.getEmail())).thenReturn(user);
Mockito.when(itemRepository.findOne(item.getId())).thenReturn(item);
scanService.takeItem(user.getEmail(), user.getId());
}
Вот мои услуги осущ:
@Override
@Transactional
public void takeItem(final String userEmail, final Long itemId) throws NoItemsInStockException {
User user = userRepository.findByEmail(userEmail);
Item item = itemRepository.findOne(itemId);
if (item.getQuantity() <= 0) {
throw new NoItemsInStockException("No items left");
}
Scan scan = new Scan();
scan.setDate(new Date());
scan.setUser(user);
scan.setItem(item);
scanRepository.save(scan);
user.setDebt(user.getDebt() + item.getPrice());
item.setQuantity(item.getQuantity() - 1);
}
И вот мое исключение:
public class NoItemsInStockException extends Exception {
public NoItemsInStockException() {
}
public NoItemsInStockException(final String message) {
super(message);
}
}
Этот тест получает исключение NullPointerException вместо NoItemsInStockException и поэтому терпит неудачу. Я просто не могу понять, что здесь не так?