Stub返回存根 - 糟糕的做法?

时间:2013-11-19 10:44:15

标签: java unit-testing dependency-injection return stub

假设我有一个实现 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原则并具有一定程度的抽象?

1 个答案:

答案 0 :(得分:0)

存根与模拟不同。您不必专门考虑存根的每一点行为。因此这不是一个真正的问题 - 你不必每次dataProviderMock.GetData.andReturn(mockData)都要写IData同样的模拟GetData你必须以正确的顺序得到这个。

(如果Data只是一个POJO / Bean,我建议返回实际的对象而不是存根。)