java - 使用 Mockito.mockStatic 模拟静态方法时出现 UnfinishedStubbingException
问题描述
使用 .mockLocalDate.now()
静态方法时出现此异常Mockito.mockStatic()
。
org.mockito.exceptions.misusing.UnfinishedStubbingException:此处检测到未完成的存根:在 utils.PowerMockTest.test(PowerMockTest.java:18)
例如 thenReturn() 可能会丢失。
正确的存根示例:when(mock.isOk()).thenReturn(true); when(mock.isOk()).thenThrow(异常); doThrow(exception).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);
}
}
}
我对异常消息有点困惑,因为我当然添加了thenReturn
声明。
任何帮助,将不胜感激。
解决方案
你有没有尝试过 mocked.when(LocalDate.now()).thenReturn(LocalDate.of(2020,11,10)); ?
推荐阅读
- javascript - 使用 Multer,express js 处理嵌套的 formdata 对象
- node.js - 在 Node/Express API 上的连接之间保持数据
- r - 在 R 中使用 ggplot 的 facet_wrap 的流持续时间曲线?
- react-native - 从组件导航到屏幕反应原生
- laravel - Laravel - 验证正确的格式
- python - 如何在 virtualenv 中安装 Python 3.6.x?
- python - 如何手动创建熊猫数据框
- node.js - express.js 中嵌套异步函数中的错误处理
- jquery - 按热键跳过 li 不工作 jquery
- go - Golang 加密消息修复 go-crypt()