Макет метода с помощью инструментального модульного теста

Я запускаю тест Expresso, и у меня есть требование смоделировать метод с контекстом в качестве параметра. Этот код находится в onStart() запуска фрагмента. Так как я запускаю тестовый сценарий в эмуляторе, я должен смоделировать метод isBLESupported вернуть истину до запуска фрагмента. Код ниже написан на onStart метод.

BreatheMapperUtils utils = new BreatheMapperUtils();
if (utils.isBLESupported(getActivity())) {
    startSyncProcess();
} else {
    //TODO does not run on emulator 
    showNotificationAlert(getString(R.string.ERROR), getString(R.string.BLE_NOT_SUPPORTED), "Ok");
}

Вот мой подход к Mock методу до запуска фрагмента. Но я вижу, что контрольные примеры выполняют реальный код и макет не работает.

@Before
public void setup() {
    mContext = mActivityTestRule.getActivity();
    BreatheMapperUtils utils = mock(BreatheMapperUtils.class);
    when(utils.isBLESupported(mContext)).thenReturn(true); 
    // launch the fragment
}

Но издеваться все-таки не удачно. Пожалуйста, помогите, если у вас есть какие-либо мысли. Можно ли издеваться над методом с контекстом? Я прочитал некоторую документацию и там говорится, что мы не можем использовать Power Mockito с тестовым набором Expresso.

1 ответ

Решение

Возможно, потому что вы создаете новый экземпляр BreatheMapperUtils в вашем onStart. Макет действует только для экземпляра, который вы используете в своем методе настройки.

Другие вопросы по тегам