EasyMock和Mockito中的精美模拟都是很好的开始,如果您不想定义所有行为,也不想限制对该模拟的调用。
但是对我来说,它们有一个很大的缺陷:如果方法的返回类型为null
或从Object
继承的任何东西,它们总是返回Object
。
我想知道在一个或两个框架中是否有某些东西对于返回Optional.empty()
的方法返回Optional<?>
或对于返回Collections.emptyList()
的方法返回List<?>
等等上...
我还找不到类似的东西。
答案 0 :(得分:1)
Mockito的当前版本默认情况下返回空的列表和可选项。 AFAIK,这是2.0版的新功能(至少是Optionals)。以下测试在Mockito 2.27.0中成功完成。
class MockitoTest
static class SomeType {
Optional<String> headline;
List<String> texts;
Optional<String> getHeadline() {
return headline;
}
List<String> getTexts() {
return texts;
}
}
@Test
void mock_returns_empty_List_by_default() {
SomeType o = mock(SomeType.class);
List<String> texts = o.getTexts();
assertEquals(emptyList(), texts);
}
@Test
void mock_returns_empty_Optional_by_default() {
SomeType o = mock(SomeType.class);
Optional<String> headline = o.getHeadline();
assertFalse(headline.isPresent());
}
}