Внедрение макетов в тесты с использованием Dagger2

Скажем, класс A зависит от B, и я хочу протестировать класс A.

Я создаю тест для класса A, в котором я хочу издеваться над B.

Класс B внедряется в класс A с помощью Dagger2 (с использованием модуля и компонента). Это означает, что класс A имеет член класса:

@Inject
B mB;

В моем тестовом классе я создаю экземпляр A в методе setUp().

Как предоставить издевательский экземпляр класса B для A?


person dors    schedule 21.08.2015    source источник


Ответы (1)


Вам нужно будет предоставить фиктивную реализацию с использованием фиктивной сборки, если вы обычно внедряете свою зависимость с помощью Dagger. Обычно это делается путем замены чего-то вроде ProdModule на MockModule, а затем @ Предоставляет фиктивную реализацию вместо вашей фиктивной или тестовой версии.

В противном случае хорошим вариантом тестирования является Mockito, если вы хотите гарантировать, что ваш макет возвращает то, что вы хотите, чтобы вам не приходилось беспокоиться о том, что в реализации макета есть ошибка.

person Sam Edwards    schedule 23.08.2015
comment
Я не понимаю, как сборка ароматов может помочь мне здесь. И нужно ли мне иметь модуль и компонент в основном коде И в тестовой папке для каждого класса, у которого есть зависимость, которую я хочу протестировать? - person dors; 23.08.2015