PowerMock whenNew,thenReturn在Mockito和JUnit5中等效

cig3rfwq  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(202)

我们正在从PowerMockJUnit 4迁移到MockitoJUnit5。我有一个非常简单的设置类。

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

    }

字符串
我知道内联mock依赖,并且已经有了它,我已经看到了一些答案,所以我很不幸地没有理解。
有没有人能解释一下whenNew行的注解到底是什么,以及如何在Junit5 + Mockito中做同样的事情?

xoshrz7s

xoshrz7s1#

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

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

字符串

@Mock
ExpressCreditCardClient expressClient

关于您分享的powermockito代码:

whenNew(creditCardClient.class).withArguments(prefs).thenReturn(expressClient);
简而言之,它所做的是:ExpressCreditCardClient类的特定于存根的构造函数,并传递某些参数值。
如果ExpressCreditCardClient类是通过一个接受单个参数的构造函数示例化的,并且该参数等于prefs,那么它将返回ExpressCreditCardClient类的模拟示例(expressClient),而不是执行实际代码。

关于junit 5/mockito方法:

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


这个函数模拟任何带有参数值的构造函数。

相关问题