Модульное тестирование Android - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь проверить докладчика, и мне нужно смоделированное местоположение, однако я получаю нулевое значение или имею значения по умолчанию, такие как 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

1 Ответ

1 голос
/ 28 мая 2019

Когда вы макетируете объект, реальная реализация не будет вызвана. Вы пытаетесь вызвать 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
...