Mockito 似乎是一个非常漂亮的 Java 存根/模拟框架。唯一的问题是我找不到任何关于使用他们的 API 的最佳方式的具体文档。测试中常用的方法包括:
doXXX(???) : Stubber
when(T) : OngoingStubbing
then(T) : OngoingStubbing
verify(???) : T
given(T) : BDDOngoingStubbing
willXXX(???) : BDDStubber
当您在实践中看到 Mockito 的示例时,您会看到如下代码:
when(yourMethod()).thenReturn(5);
从我读过的所有文档中,我已经确定了 Mockito “语法”的几个“模式”,这些模式是通过将这些方法调用以菊花链方式连接在一起的,就像上面的示例一样。我发现的一些常见模式是:
何时/然后: when(yourMethod()).thenReturn(5);
给定/将:给定(yourMethod()).willThrow(OutOfMemoryException.class);
做/当: doReturn(7).when(yourMock.fizzBuzz());
Will/Given/Do: willReturn(any()).given(yourMethod()).doNothing();
验证/执行: verify(yourMethod()).doThrow(SomeException.class);
我正在窒息的是如何选择正确的方法调用模式/组合来为我的测试用例建模。似乎您可以将它们以看似无穷无尽的组合菊花链式连接在一起,我不确定哪种模式适合哪个问题。
一些 Mockito Guru 能否帮助阐明 Mockito 方法的哪些模式/组合用于哪些类型的测试用例(以及为什么)?提前致谢!