假设我有一个实现 IDataProvider 接口的 DataProvider 类。 IDataProvider 定义了一种方法 IData GetData()。 此外还有一个消费者类,它应该在任何5秒内调用此函数以使其保持最新状态。 这是一个简短的代码示例,它描述了上述定义:
interface IDataProvider{
IData GetData();
}
class Consumer{
IDataPRovider m_provider;
Consumer(IDataProvider provider){
m_provider = provider;
}
}
现在,要完全隔离测试Consumer类,我应该创建两个存根。更准确, DataProviderStub ,返回 DataStub 。 正如我从this主题所理解的那样,返回存根的存根可能是设计的一个问题。
1。为什么这是一个问题?它可能导致什么问题?
2.我如何重新设计它以避免存根返回存根,但仍然坚持DI原则并具有一定程度的抽象?
答案 0 :(得分:0)
存根与模拟不同。您不必专门考虑存根的每一点行为。因此这不是一个真正的问题 - 你不必每次dataProviderMock.GetData.andReturn(mockData)
都要写IData
同样的模拟GetData
你必须以正确的顺序得到这个。
(如果Data只是一个POJO / Bean,我建议返回实际的对象而不是存根。)