Короткий ответ: инверсия зависимости.
Несколько более длинный ответ:
Проблема, вероятно, связана с тем, что делает fetchSource;не видя подробностей, этот ответ должен быть немного расплывчатым.Я предполагаю, что fetchSource вызывает что-то, чтобы фактически выполнить поиск, и что детали того, как это делается, не совсем то, что вы заинтересованы в тестировании.Я также предполагаю, что вы хотели писать «fetch» везде, где пишете «fecht», но это не особенно важно для ответа.
Вы хотите абстрагироваться от конкретных кусочков fetchSource, чтобы вы моглисосредоточиться на тестировании, что важно для вас (parseHtmlToImage?).Это можно сделать несколькими способами:
- Создайте свой imageFetcher с реализацией заглушки интерфейса, через который вы фактически получаете URL, передавая его через конструктор (инвертируя зависимость);Ваша заглушка играет роль «Интернета» и возвращает стандартный ответ.
- Если вы не можете создать реализацию интерфейса заглушки, представьте интерфейс адаптера, где у вас есть производственная реализация, использующая текущий интерфейс.который вы используете для извлечения, и реализацию заглушки, которую вы используете для своих тестов.
Это довольно стандартная методика написания тестируемого кода (см. принцип инверсии зависимости).