首页 > 解决方案 > verify(sessionRegistry, times(1)).getAllSessions(principle, true) 正在返回 null

问题描述

        List<SessionInformation> sessions = sessionRegistry.getAllSessions(principle, true);
        verify(sessionRegistry, times(1)).getAllSessions(principle, true).forEach(SessionInformation::expireNow);

第一行总是返回空列表,这是预期的,但每当我通过 Mockito.verify 调用时,它就会返回 null。

标签: springunit-testingjunitmockito

解决方案


验证不是这样工作的。在 verify 检查是否调用了方法时,没有必要返回或检查您作为模拟值提供的值。那么它为什么要退货呢?

例如,如果您已声明sessions并存根某个方法,例如getAllSessions返回它。为什么要通过验证来检查它是什么?它只验证在模拟上调用了一些存根方法。

如果您sessions出于某种原因需要使用,请直接使用它。不通过验证。

再一次:你在你的模拟上存根方法你不测试那个方法,而是使用那个存根方法的其他方法。这就是嘲笑和存根的全部意义所在。您应该相信 Mockito 会履行其承诺并让代码使用您配置的存根方法。


推荐阅读