有没有类似 "really nice mock" 的东西?
Is there something like a "really nice mock"?
如果您不想为所有内容定义行为并且不想限制对该模拟的调用,那么 EasyMock 和 Mockito 中的漂亮模拟是一件好事。
但对我来说它们有一个很大的缺陷:如果方法的 return 类型是 Object
或继承自 [=12 的任何东西,它们总是 return null
=].
我想知道在一个或两个框架中是否有某些东西 returns Optional.empty()
对于 return Optional<?>
或 Collections.emptyList()
的方法对于 return List<?>
等等的方法...
我还没有找到类似的东西。
Mockito 的当前版本 return 默认为空列表和可选。据我所知,这是 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());
}
}
如果您不想为所有内容定义行为并且不想限制对该模拟的调用,那么 EasyMock 和 Mockito 中的漂亮模拟是一件好事。
但对我来说它们有一个很大的缺陷:如果方法的 return 类型是 Object
或继承自 [=12 的任何东西,它们总是 return null
=].
我想知道在一个或两个框架中是否有某些东西 returns Optional.empty()
对于 return Optional<?>
或 Collections.emptyList()
的方法对于 return List<?>
等等的方法...
我还没有找到类似的东西。
Mockito 的当前版本 return 默认为空列表和可选。据我所知,这是 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());
}
}