多次模拟同一模拟方法调用

  • 本文关键字:模拟 方法 调用 mockito
  • 更新时间 :
  • 英文 :


在使用Mockito时

我在 2 个测试用例中使用相同的模拟(我知道这是一个糟糕的测试设计,但这是一个实验)

@Test
public void test1()
{
    Mockito.when(mock.method1()).thenAnswer(new Answer<Boolean>()
    {
        @Override
        public Boolean answer(InvocationOnMock temp) throws Throwable
        {
            return true;
        }
    }
    ......
}
@Test
public void test2()
{
    Mockito.when(mock.method1()).thenReturn(false);
    ....
}

当测试按顺序运行时

测试1

测试2

模拟方法在 Test2 中仍返回 true。这是预期行为还是错误?

更新:

  1. 该方法不是最终的
  2. 我正在使用JUnit。

正如你提到的,Mockito建议不要在测试用例中重用模拟。

也就是说,您可能想尝试在每个测试用例中重置模拟:

   List mock = mock(List.class);
   when(mock.size()).thenReturn(10);
   mock.add(1);
   reset(mock);
   //at this point the mock forgot any interactions & stubbing

重置模拟

如果这没有帮助

我还看到您在一种方法中使用thenAnswer(),在另一种方法中使用thenReturn()。 你能考虑在这两种情况下都使用thenReturn()吗?

Mockito在其文档中包含了有关回调存根的建议:

我们建议仅使用 thenReturn() 或 thenThrow() 使用简单的存根。

使用回调存根

相关内容

  • 没有找到相关文章

最新更新