Макет метода с помощью инструментального модульного теста
Я запускаю тест 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. Макет действует только для экземпляра, который вы используете в своем методе настройки.