我阅读了教程,但不明白应该实现多少模拟对象。我们是将一个接口还是整个实现的类传递给mock()?
如果您没有实现呢?你需要创建一个接口吗?假设你忽略了一些方法,而忽略了实际的实现
来自mockito.org的示例
//mock creation
List mockedList = mock(List.class);
我需要用android List类的方法创建一个类"List"吗?
Mockito对每个方法的默认实现都是由RETURNS_DEFAULTS提供的,它(除非另有配置)遵循ReturnsEmptyValues:
每个Mockito模拟的默认答案。
- 为基元返回方法返回适当的基元
- 为基元包装类返回一致的值(例如,int返回方法返回0,也)
- 为集合返回方法返回空集合(适用于最常用的集合类型)
- 返回toString()方法的mock描述
- 如果引用等于可比较#compareTo(T other)方法的非零引用,则返回零(请参阅第184期)
- 返回java.util.Optional#empty()empty对于Optional为Optional(请参阅问题191)
- 对其他所有内容返回null
对于传递给Mockito.mock()
的类上的任何可模拟但未缓冲的方法,默认情况下,无论传递的是具体类还是接口,模拟方法都将具有此行为事实上,Mockito鼓励您只截取对测试中的系统有价值的方法,并让默认值适用于其他所有方法。如果您"忘记"存根一个方法,或者在编写测试后添加了新方法,也会出现这种情况。
请注意,对于Mockito.spy
,默认行为是将传递给spy
的实例委托给(的副本),如果愿意,可以通过将其他参数传递给Mockito.mock
来更改此"默认答案"。