我们正在从
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
中做同样的事情吗?
可能你的测试类中有一个字段,如:
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);
这个模拟任何传递任何参数值的构造函数。