首页 > 解决方案 > 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);
    }
.
.
.
}

因为我没有给出lamdaInvokerinside 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 构造函数仍在调用。

标签: springunit-testingjunitmockitopowermockito

解决方案


推荐阅读