如何使用mockito模拟构造函数?

问题描述 投票:0回答:2

我正在测试某个类的方法,该类具有 BuildingBlockDbHandler.class 的新构造函数调用。我之前使用 powermock 来模拟构造函数,就像这样 -

BuildingBlockDbHandler blockDbHandler = mock(BuildingBlockDbHandler.class); PowerMockito.whenNew(BuildingBlockDbHandler.class).withAnyArguments().thenReturn(blockDbHandler);

但是现在我要迁移到mockito,我怎样才能在其中做同样的事情?

我尝试使用mockedConstruction,但找不到使用它来存根构造函数调用的正确方法。 我希望在不使用 powermock 的情况下对构造函数调用进行存根。

java spring-boot junit mockito powermock
2个回答
0
投票

我认为

MockedConstruction
就是您正在寻找的东西,它从 4.X 甚至更早版本开始可用。

try (MockedConstruction<BuildingBlockDbHandler> mockedConstruction = Mockito.mockConstruction(BuildingBlockDbHandler.class)) {
    final var blockDbHandler = Mockito.mock(BuildingBlockDbHandler.class);

    Mockito.when(mockedConstruction.construct(any()))
           .thenReturn(blockDbHandler);

    // ...
}

注意我还没有测试代码。这个页面似乎是一个好的开始。


-1
投票

Mockito 不支持模拟构造函数。 PowerMock 是mockito 的扩展,它不仅支持模拟构造函数,还支持mockito 不支持的其他一些模拟。

您为什么要放弃 PowerMock?

© www.soinside.com 2019 - 2024. All rights reserved.