Stub返回Stub-这是一种糟糕的做法



假设我有一个实现IDataProvider接口的类DataProviderIDataProvider定义一个方法IData GetData()。此外,还有一个类Consumer,它应该在任何5秒内调用此函数以保持最新。以下是描述上述定义的简短代码示例:

interface IDataProvider{
  IData GetData();
}
class Consumer{
  IDataPRovider m_provider;
  Consumer(IDataProvider provider){
    m_provider = provider;
  }
}

现在,为了在完全隔离的情况下测试Consumer类,我应该创建两个stub。更准确地说,返回DataStubDataProviderStub

1.为什么这是个问题?它可能会引起什么问题
2.我如何重新设计它,以避免返回存根的存根,但仍然坚持DI原则并具有一定程度的抽象

存根与mock不同。你不需要特别说明存根的每一个行为。因此,这并不是一个真正的问题-您不必每次调用GetData时都编写dataProviderMock.GetData.andReturn(mockData)IData的mock,也不必按正确的顺序进行编写。

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

相关内容

最新更新