Я пытаюсь протестировать своего докладчика, и мне нужно имитируемое местоположение, однако я получаю нулевое значение или имею значения по умолчанию, такие как 0,0 для широты, долготы, пеленга и т. д.
Я уже пытался создать новый объект Location и инициализировать все нужные мне поля.
val latitude = 37.422
val longitude = -122.084
val mockLocation = mock(Location::class.java)
mockLocation.latitude = latitude
mockLocation.longitude = longitude
presenter.loadsAirpots(latitude, longitude)
presenter.locationChanged(mockLocation)
System.out.println(mockLocation.latitude)
Я ожидаю, что широта будет 37,422, но фактический результат равен 0,0.
@Billda Привет, я попробовал это, и я получил тот же результат, что и 0.0.
Когда вы издеваетесь над объектом, реальная реализация не вызывается.
Вы пытаетесь вызвать setLatitude(latitude)
, но это не изменит значение.
Если вы хотите издеваться над объектом, который вы должны сделать:
val mockLocation = mock(Location::class.java)
given(mockLocation.getLatitude()).willReturn(latitude)
given(mockLocation.getLongitude()).willReturn(longitude)
Или вы можете создать реальный объект:
val realLocation = Location("provider")
realLocation.latitude = latitude
realLocation.longitude = longitude
Это всегда ноль, когда я пытаюсь создать реальный объект для модульного тестирования.
Почему вы издеваетесь над этим, используя Mockito? Вы можете использовать его напрямую, как val mockLocation = Location("provider") mockLocation.latitude = latitude mockLocation.longitude = longitude