PowerMock whenNew,thenReturn 在 Mockito 和 JUnit5 中等效

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

我们正在从

PowerMock
JUnit
4 迁移到
Mockito
JUnit5
。我有一个非常简单的设置课程。

    @BeforeEach
    public void setUp() throws Exception {
    service = new ExpressProcessorService<>(prefs);
    
    //whenNew(ExpressCreditCardClient.class).withArguments(prefs).thenReturn(expressClient);
    MockedConstruction<ExpressCreditCardClient> mockedExpressCreditCardClient = mockConstruction(ExpressCreditCardClient.class);

    }

我知道内联模拟依赖并且已经拥有它,并且我已经看到了一些答案,因此不幸的是我不明白。

有人可以解释一下注释的whenNew line 到底做了什么,以及如何在

Junit5
+
Mockito
中做同样的事情吗?

java testing mockito junit5 powermock
1个回答
0
投票

可能你的测试类中有一个字段,如:

ExpressCreditCardClient expressClient = ...creation of mock...

@Mock
ExpressCreditCardClient expressClient

关于您分享的 powermockito 代码:

whenNew(ExpressCreditCardClient.class).withArguments(prefs).thenReturn(expressClient);

简而言之,它的作用是:传递特定参数值的

ExpressCreditCardClient
类的存根特定构造函数。

如果

ExpressCreditCardClient
类通过采用单个参数的构造函数实例化,并且该参数等于
prefs
,那么它将返回
ExpressCreditCardClient
类的模拟实例(
expressClient
),而不是执行实际代码).

关于junit5/mockito的做法:

MockedConstruction<ExpressCreditCardClient> mockedExpressCreditCardClient = mockConstruction(ExpressCreditCardClient.class);

这个模拟任何传递任何参数值的构造函数。

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