使用mockito.mockstatic模拟静态方法时出现UnfinishedStubingException

ej83mcc0  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(1208)

我在模仿时遇到了这个例外 LocalDate.now() 静态法 Mockito.mockStatic() .
org.mockito.exceptions.misusing.unfinishedstubbingexception:在utils.powermocktest.test(powermocktest)检测到未完成的存根异常。java:18)
e、 g.可能缺少return()。
正确的存根示例:when(mock.isok()).thenreturn(true);when(mock.isok()).thenthrow(异常);dothrow(exception).when(mock).somevoidmethod();提示:
缺少返回()
您正在尝试存根一个不支持的最终方法
在“thenreturn”指令完成之前,您正在存根另一个mock的行为
代码是

public class MockStaticTest {
    @Test
    void test(){
        LocalDate today=LocalDate.of(2020,11,20);
        try (MockedStatic mocked = mockStatic(LocalDate.class)) {
            mocked.when(LocalDate::now).thenReturn(LocalDate.of(2020,11,10));
            Assertions.assertEquals(today,LocalDate.now());
            mocked.verify(atLeastOnce(),LocalDate::now);
        }
    }
}

我对异常消息有点困惑,因为我确实添加了 thenReturn 声明。
任何帮助都将不胜感激。

6pp0gazn

6pp0gazn1#

你试过mocked.when(localdate.now()).thenreturn(localdate.of(2020,11,10))?

kx1ctssn

kx1ctssn2#

尝试:

private LocalDate expectedReturn = LocalDate.of(2020, 11, 20);

    @Test
    void test() {
        LocalDate today = LocalDate.of(2020, 11, 20);
        try (MockedStatic<LocalDate> mocked = Mockito.mockStatic(LocalDate.class)) {
            mocked.when(LocalDate::now).thenReturn(expectedReturn);
            Assertions.assertEquals(today, LocalDate.now());
            mocked.verify(Mockito.atLeastOnce(), LocalDate::now);
        }
    }

相关问题