假设我有一个实现IDataProvider接口的类DataProviderIDataProvider定义一个方法IData GetData()。此外,还有一个类Consumer,它应该在任何5秒内调用此函数以保持最新。以下是描述上述定义的简短代码示例:
interface IDataProvider{
IData GetData();
}
class Consumer{
IDataPRovider m_provider;
Consumer(IDataProvider provider){
m_provider = provider;
}
}
现在,为了在完全隔离的情况下测试Consumer类,我应该创建两个stub。更准确地说,返回DataStub的DataProviderStub 1.为什么这是个问题?它可能会引起什么问题
2.我如何重新设计它,以避免返回存根的存根,但仍然坚持DI原则并具有一定程度的抽象
存根与mock不同。你不需要特别说明存根的每一个行为。因此,这并不是一个真正的问题-您不必每次调用GetData
时都编写dataProviderMock.GetData.andReturn(mockData)
和IData
的mock,也不必按正确的顺序进行编写。
(如果Data只是一个POJO/Bean,我建议返回实际对象,而不是存根。)