我有一个调用 spring 数据存储库的 java spring 服务,我想使用mockito进行 Junit 测试,这是我的类和我想测试的服务:
@Service
public class DataServiceImpl implements DataService{
@Autowired
private CautionRepository cautionRepository;
@Override
public void addCautions(List<CautionsDTO> cautions, Contrat contrat) {
if(cautions != null && !cautions.isEmpty()) {
cautions.forEach(caution -> {
Caution caution = new Caution();
cautionContrat.setAmount(caution.getAmount());
cautionContrat.setDate(caution.getDate());
caution.setContrat(contrat);
cautionRepository.save(caution);
});
}
}
}
这是我的单元测试
@RunWith(SpringRunner.class)
public class DataServiceImplTest{
@InjectMocks
private DataServiceImpl dataService;
@Mock
private CautionRepository cautionRepository;
@Test
public void addListCautionsTest() {
List<CautionsDTO> cautions = new ArrayList<>();
ContratExportation contrat = new ContratExportation();
Caution caution = new Caution();
dataDelService.addCautions(cautions,contrat);
Mockito.verify(cautionRepository, times(1)).save(caution);
}
}
当我运行测试时,我收到以下错误:
Wanted but not invoked:
cautionRepository.save(
org.model.Caution@2abe9173
);
-> at org.service.DataServiceImplTest.addListCautionsTest(DataServiceImplTest.java:292)
Actually, there were zero interactions with this mock.
你知道我的测试有什么问题吗
最佳答案
这应该是执行测试的正确代码
@RunWith(SpringRunner.class)
public class DataServiceImplTest{
@Autowired
private DataServiceImpl dataService;
@MockBean
private CautionRepository cautionRepository;
@Test
public void addListCautionsTest() {
List<CautionsDTO> cautions = new ArrayList<>();
ContratExportation contrat = new ContratExportation();
Caution caution = new Caution();
dataDelService.addCautions(cautions,contrat);
Mockito.verify(cautionRepository, times(1)).save(caution);
}
}
关于java - 如何使用 Junit 和 Mockito 使用 spring 存储库测试 void 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59841970/