如何对以下代码进行单元测试?
public Mono<MyObject> create(MyObject myobject)
{
return Mono.fromCallable(() -> transactionTemplate.execute(status -> {
try {
return myRepository.save(myobject);
}
catch (Exception e) {
log.error(e.getMessage());
throw new ...;
}
})).subscribeOn(Schedulers.boundedElastic());
}
在我当前的测试中,我可以执行以下操作,但我也想模拟
myRepository.save()
并使用 Mockito.verify()
验证执行情况。
@Mock
private transient TransactionTemplate transactionTemplate;
@Test
void test() {
when(transactionTemplate.execute(any())).thenReturn(myObject);
}
对您的问题的一些评论:
在您的测试类中添加
@ContextConfiguration(classes = {
...,
TransactionTemplateConfigration.class
...,
})
@MockBean({
...,
PlatformTransactionManager.class
...,
}
这将使 TransactionTemplate 能够被注入,并且模拟
PlatformTransactionManager
将防止错误