Java 不使用带Autowire的构造函数的模拟服务
我想编辑此代码以使用mock for services。此代码工作正常:Java 不使用带Autowire的构造函数的模拟服务,java,spring,spring-boot,junit,junit5,Java,Spring,Spring Boot,Junit,Junit5,我想编辑此代码以使用mock for services。此代码工作正常: @Service public class BinCountryCheckFilterImpl { private RiskFilterService riskFilterService; private Terminals terminal; @Autowired public BinCountryCheckFilterImpl(Terminals terminal, RiskFilt
@Service
public class BinCountryCheckFilterImpl {
private RiskFilterService riskFilterService;
private Terminals terminal;
@Autowired
public BinCountryCheckFilterImpl(Terminals terminal, RiskFilterService riskFilterService) {
this.terminal = terminal;
this.riskFilterService = riskFilterService;
}
public void validateBinCountryCheckFilter(Terminals terminal) throws JAXBException, JsonProcessingException {
List<RiskFilters> filter_list = riskFilterService.findRiskFiltersByTerminalIdAndType(terminal.getId(), "BinCountryCheckFilter");
}
}
此代码不起作用:
@Service
public class BinCountryCheckFilterImpl {
@Autowired
@Qualifier("riskFilterService")
private RiskFilterService riskFilterService;
public Response validateBinCountryCheckFilter(Merchants merchant, Contracts contract, Terminals terminal,
PaymentTransaction message, HttpServletRequest request) throws JAXBException, JsonProcessingException {
...........
}
}
由于某种原因,当我运行JUnit测试时,riskFilterService
为空。有什么方法可以通过JUnit测试正确地实现服务吗?
在我的例子中,我不想从构造函数调用
终端,riskFilterService
。当您使用字段注入而不是构造函数注入时,您必须在测试用例中调用以下语句来初始化模拟(理想情况下是在之前标记为@的方法中)
MockitoAnnotations.initMocks(this);
@Service
public class BinCountryCheckFilterImpl {
@Autowired
@Qualifier("riskFilterService")
private RiskFilterService riskFilterService;
public Response validateBinCountryCheckFilter(Merchants merchant, Contracts contract, Terminals terminal,
PaymentTransaction message, HttpServletRequest request) throws JAXBException, JsonProcessingException {
...........
}
}