Предположим, у меня есть класс DataProvider который реализует IDataProvider Интерфейс. IDataProvider определяет метод IData GetData(). Кроме того, существует класс Потребитель, который должен вызывать эту функцию каждые 5 секунд для обновления. Вот небольшой пример кода, который описывает приведенное выше определение:Stub возвращает stub - плохая практика?
interface IDataProvider{
IData GetData();
}
class Consumer{
IDataPRovider m_provider;
Consumer(IDataProvider provider){
m_provider = provider;
}
}
Теперь, чтобы проверить класс потребителей в полной изоляции я должен создать два корешки. Более точный, DataProviderStub который возвращает DataStub. Как я понял из this тема, заглушка, которая возвращает заглушку, является возможной проблемой с дизайном.
1. Почему именно это проблема? Какие проблемы могут возникнуть?
2. Как я могу переделать его, чтобы избежать заглушки, которая возвращает заглушку, но все еще придерживаться принципов DI и имеет некоторый уровень абстракции?
А что, если это не POJO? Если я верну фактический объект, я заблокирую абстракцию, и мой модульный тест будет зависеть от фактической реализации IData. Что тоже не хорошо ... – meltedspark
@binyan уверен, если это не POJO, вы должны, вероятно, заглушить его – artbristol
Что возвращает нас к вопросам выше :) – meltedspark