hao*_*ang 6 java unit-testing mockito
LocalDate.now()当使用 模拟静态方法时,我得到了这个异常Mockito.mockStatic()。
org.mockito.exceptions.misusing.UnfinishedStubbingException:此处检测到未完成的存根:at utils.PowerMockTest.test(PowerMockTest.java:18)
例如 thenReturn() 可能会丢失。
正确存根的示例:when(mock.isOk()).thenReturn(true); 当(mock.isOk()).thenThrow(异常); doThrow(异常).when(mock).someVoidMethod(); 提示:
- 缺少 thenReturn()
- 您正在尝试存根最终方法,该方法不受支持
- 在“thenReturn”指令完成之前,您正在对内部另一个模拟的行为进行存根
代码是
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我对异常消息有点困惑,因为我确实添加了thenReturn语句。
任何帮助,将不胜感激。
您需要在 try 块之外实例化返回对象。
问题是您正在模拟该类LocalDate,然后尝试在模拟块中使用同一类try;
mocked.when(LocalDate::now).thenReturn(LocalDate.of(2020,11,10));
Run Code Online (Sandbox Code Playgroud)
@sankv 答案有效,因为它实例化了LocalDate静态块之前返回的内容。
小智 -1
你尝试过mocked.when(LocalDate.now()).thenReturn(LocalDate.of(2020,11,10)); ?
| 归档时间: |
|
| 查看次数: |
3205 次 |
| 最近记录: |