Я хочу реализовать тест JUUNit для этой службы Spring:
@Service
public class BinCountryCheckFilterImpl {
@Autowired
@Qualifier("riskFilterService")
private RiskFilterService riskFilterService;
@Autowired
@Qualifier("binlistsService")
private BinlistsService binlistsService;
public BinCountryCheckFilterImpl() {
}
public PaymentResponse validateBinCountryCheckFilter(Merchants merchant, Contracts contract, Terminals terminal,
PaymentTransaction message, HttpServletRequest request) throws JAXBException, JsonProcessingException {
List<RiskFilters> filter_list = riskFilterService.findRiskFiltersByTerminalIdAndType(terminal.getId(), "BinCountryCheckFilter");
Optional<BinLists> db_bin_list = binlistsService.findByName(billing_address_country);
}
}
Я пробовал этот тест JUnit:
public class BinCountryCheckFilterImplTest {
@InjectMocks
private BinCountryCheckFilter binCountryCheckFilter;
private BinlistsService binlistsService = Mockito.mock(BinlistsService.class);
private RiskFilterService riskFilterService = Mockito.mock(RiskFilterService.class);
@Mock
List<RiskFilters> riskFiltersList = null;
Optional<BinLists> binList = null;
@BeforeEach
public void beforeEachTest() throws IOException {
MockitoAnnotations.initMocks(this);
riskFiltersList = new ArrayList<RiskFilters>();
RiskFilters filter = new RiskFilters();
riskFiltersList.add(filter);
BinLists binLists = new BinLists();
binList = Optional.of(binLists);
}
@Test
public void testBinCountryCheckFilterImpl() throws JsonProcessingException, JAXBException {
when(riskFilterService.findRiskFiltersByTerminalIdAndType(anyInt(), anyString())).thenReturn(riskFiltersList);
when(binlistsService.findByName(anyString())).thenReturn(binList);
List<RiskFilters> filter_list = riskFilterService.findRiskFiltersByTerminalIdAndType(11, "BinCountryCheckFilter");
Optional<BinLists> bin = binlistsService.findByName("US");
BinCountryCheckFilterImpl binCountryCheckFilterImpl = new BinCountryCheckFilterImpl();
binCountryCheckFilterImpl.validateBinCountryCheckFilter(merchant, contract, terminal, authorizeTransactiontMockup(), request);
}
Код работает нормально, когда я пытаюсь смоделировать запросыс when
..... но происходит сбой, когда я вызываю реальную службу Spring для проверки ее с помощью NPE в этой строке в классе Java службы BinCountryCheckFilterImpl
:
List<RiskFilters> filter_list = riskFilterService.findRiskFiltersByTerminalIdAndType(terminal.getId(), "BinCountryCheckFilter");
Как я могу смоделировать этот SQL-запрос?