【发布时间】:2021-11-05 10:30:10
【问题描述】:
您好,我是新的 Mockito 框架,正在尝试为我的 spring-boot 应用程序编写一些单元测试。 我模拟了我的服务,所以每次 Mockito 运行时,它都使用一些空的模拟数据库,我想使用一些准备好的嵌入式数据库,让我解释一下用例。 我有一个实体,比如说 EntityX。
@Entity
@Table(name = "ENTITYX")
public class EntityX{
private long id;
// Some other properties
}
我创建了它的存储库,我有一个定义方法流程的服务,该方法接受 entityId 的参数并从 DB 中获取该实体,如下所示。
@Service
public class MyService{
@Autowired
EntityXRepository repository;
public Object process(long entityId){
EntityX entity = repository.findById(entityId).orElseThrow(()-> new RuntimeException("No Entity found with id "+entityId));
// Does some operation with entity object.
...
return someObject;
}
}
现在在我的单元测试中,我正在使用 @Mock 和调用 process(someid); 来模拟我的服务;但处理方法总是抛出异常,因为在模拟数据库中不存在someid 的实体。插入 EntityX 表超出了我的应用程序的范围,所以是否可以向 Mockito 提供一些数据库文件(一些嵌入式数据库文件),以便它可以从提供的数据库记录而不是空数据库开始?
【问题讨论】:
标签: spring-boot unit-testing mockito powermockito