Я думаю, что вы запутываете некоторые биты здесь.В тесте вы, похоже, тестируете сервис, а не репозиторий.Служба должна быть смоделирована для того, чтобы действительно что-то вернуть, а не ноль.
Давайте начнем с настройки теста.Вам нужно будет объявить макеты и то, что вы тестируете
public class MainRepositoryTest {
@Rule
public MockitoRule mockitoRule = MockitoJUnit.rule();
@Mock
ImageService service;
@InjectMocks
MainRepository repository;
//...
}
Репозиторий - это то, что вы на самом деле будете тестировать здесь.На самом деле, вы просто получаете экземпляр хранилища с внедренной имитацией сервиса.Однако этот макет будет возвращать ноль при каждом вызове метода.
Так что теперь вам нужно будет настроить его для каждого случая, который вы хотите протестировать.Скажем, вы хотите проверить успешный ответ:
@Test
public void testSuccess (){
when(service.downloadImage("test")).theReturn(<successful response>);
repository.download("test", <mutable live data>);
// Now assert something about the live data
}
Вам придется смоделировать сервис, чтобы он возвращал успешный ответ при вызове с ожидаемыми аргументами.Я не уверен, как использовать живые данные здесь, потому что я никогда не использовал их.Я на самом деле думал, что модернизация уже поддерживает это, и вам не придется конвертировать его вручную.
Что касается кинжала, то здорово, что вы используете внедрение зависимостей.Однако в тестах обычно не вводят зависимости с помощью кинжала.Здесь достаточно использовать аннотацию mockito.