Я запускаю тест Expresso, и у меня есть требование смоделировать метод с контекстом в качестве параметра.Этот код находится в onStart()
фрагмента запуска.Поскольку я запускаю тестовый сценарий в эмуляторе, мне нужно смоделировать метод isBLESupported
, чтобы он возвращал значение true перед запуском фрагмента.Код ниже написан в методе 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.