spring - Mockito Powermock 不模拟构造函数
问题描述
我正在尝试通过模拟其他层为我的 api 的服务层编写单元测试。那是我要测试的课程:
@Service
public class DeleteService implements IService<String, ApiResponseModel> {
private final LambdaInvoker lambdaInvoker;
public DeleteService(){
this.lambdaInvoker = new LambdaInvoker(Constants.DELETE_LAMBDA_ARN);
}
.
.
.
}
因为我没有给出lamdaInvoker
inside of DeleteService
,所以在我的测试中LambdaInvoker
使用@Mock
注释模拟不起作用:
@Mock
private LambdaInvoker lambdaInvoker;
@InjectMocks
private DeleteService deleteService;
有一个解决方案可以在互联网LambdaInvoker
中使用模拟类的构造函数,PowerMock
但在我的情况下它什么也没做。
PowerMockito.whenNew(LambdaInvoker.class).withArguments(Mockito.any()).thenReturn(lambdaInvoker);
deleteService = new DeleteService();
given(lambdaInvoker.invoke(any())).willReturn("okito");
执行此操作后,在尝试创建 DeleteService 的测试时仍然出现错误,因为调用 DeleteService 构造函数时原始 LambdaInvoker 构造函数仍在调用。
解决方案
推荐阅读
- python - python paho-mqtt - 没有收到 mqtt 消息
- node.js - 许多查询postgres(节点),没有并行查询?
- django - 关于类别 get_absolute_url 的反向 url
- python - 如何使用 python 重置 Windows USB 设备?
- flutter - 如何在 Flutter 中实现嵌套视图(动态页面)?
- javascript - Facebook 应用程序的深层链接(使用 fb: 协议)在 Facebook 应用程序内浏览器中不起作用
- bash - 使用 BASH 从 csv 文件中写入 X 列
- cypress - Cypress :: 如何通过选择图像的 alt 值来单击图像?
- mysql - GROUP BY DAYNAME 不包括今天的记录?
- php - 管道到文件时输出 php 标头的 Cron 作业