使用 Mockito 模拟 hibernate 的 SessionFactory 时出现问题
知道为什么下面的模拟代码不起作用吗?
org.hibernate.SessionFactory sessionFactory = Mockito.mock(SessionFactory.class);
org.hibernate.Session session = Mockito.mock(Session.class);
Mockito.when(sessionFactory.getCurrentSession()).thenReturn(session);
thenReturn 语句无法编译。 “OngoingStubbing 类型中的方法 thenReturn(Session) 不适用于参数 (Session)” 但是,为什么不适用呢?我想我已经正确地计算出了进口。
Any idea why the following mocking code does not work?
org.hibernate.SessionFactory sessionFactory = Mockito.mock(SessionFactory.class);
org.hibernate.Session session = Mockito.mock(Session.class);
Mockito.when(sessionFactory.getCurrentSession()).thenReturn(session);
The thenReturn statement does not compile.
"The method thenReturn(Session) in the type OngoingStubbing is not applicable for the arguments (Session)"
But, why is it not applicable? I think I have the imports figured out correctly.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是因为 SessionFactory.getCurrentSession() 实际返回的类型是 org.hibernate.classic.Session,它是 org.hibernate 的子类型。会话。您需要将模拟更改为正确的类型:
This is because the type actually returned by
SessionFactory.getCurrentSession()
isorg.hibernate.classic.Session
, which is a sub-type oforg.hibernate.Session
. You'll need to change your mock to the correct type: