当前位置: 首页 > 知识库问答 >
问题:

when()需要一个参数,该参数必须是“mock上的方法调用”

糜运良
2023-03-14

不幸的是:

org.mockito.exceptions.misusing.MissingMethodInvocationException: 
when() requires an argument which has to be 'a method call on a mock'.

TweetServiceTest.java

Session session;
TweetService tweetService = new TweetServiceImpl();

@Before
public void setUp() throws Exception {
    session = Mockito.mock(Session.class);
    HibernateUtil hibernateUtil = Mockito.mock(HibernateUtil.class);
    Mockito.when(hibernateUtil.getSession()).thenReturn(session);
}

Hibernateutil.java

public static Session getSession() {
    Session session = null;
    try {
        session = HibernateUtil.getSessionFactory().getCurrentSession();
        if (!session.isOpen()) {
            session = HibernateUtil.getSessionFactory().openSession();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return session;
}

共有1个答案

邢寒
2023-03-14

Mockito不模拟静态方法。只有实例方法。

模拟静态方法将需要重新定义类本身。

模拟实例方法只需要创建动态生成的子类的实例,该子类覆盖超类的所有方法。

 类似资料: