我想模拟一个依赖项并在大多数测试用例中返回一个默认值,因为它们中的大多数不应该关心返回的值但是有一些特定的情况就像我想测试依赖项返回一些奇怪的值或者只是扔。所以我以这种方式对其进行建模。大多数情况下,它应该返回一个漂亮且有效的值。
默认为所有测试类返回 20L
的测试设置。
Dependency dependency = Mockito.mock(Dependency.class);
when(dependency.returnSomeVal()).thenReturn(20L);
在特定的测试用例类中,我想覆盖如下行为:
when(dependency.returnSomeVal()).thenThrow(); //failure cases
when(dependency.returnSomeVal()).thenReturn(Weird_Val); //failure cases
但是我没有找到一个好的解决方案来覆盖现有的行为?有什么想法吗?
最佳答案
您可以重置模拟并添加行为。在测试中,做
Mockito.reset(dependency);
when(dependency.returnSomeVal()).thenThrow(); //failure cases
when(dependency.returnSomeVal()).thenReturn(Weird_Val); //failure cases
不过,重置将删除此类上的所有模拟行为。如果您只想重新模拟某些方法,则必须从头开始创建模拟。
关于java - 如何将 Mock 设置为具有默认行为并可以在某些测试中覆盖它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62398273/