Есть ли у кого-нибудь дополнительные идеи о том, как протестировать это вместе с фреймворками, которые мы используем. Документация Android/Google не предлагает никакой помощи, равно как и многочисленные часы работы в Интернете.
Мы попытались протестировать с внедрением FusedLocationProvideClient и без него. Мы попытались запустить тестовый модуль Koin в нашем тестовом классе, с параметрами активности и без нее, но, похоже, ничего не изменилось. FusedLocationProviderClient имитируется с расслабленным значением true.
Тестовый класс:
Код: Выделить всё
private val viewModel = mockk(relaxed = true)
private val locationClient = mockk(relaxed = true)
override var testModule = module {
viewModel { viewModel }
factory { locationClient }
}
@Test
fun itShouldDoSomethingWithLocation() {
val scenario = FragmentScenario.launchInContainer(LocationSelectionDialogFragment::class.java)
scenario.moveToState(Lifecycle.State.RESUMED)
scenario.onFragment {
val location = Location("this")
location.latitude = 37.422
location.longitude = -122.084
location.accuracy = 3.0f
locationClient.setMockMode(true)
locationClient.setMockLocation(location)
verify { viewModel.onDisplayed() }
}
}
Код: Выделить всё
class LocationSelectionDialogFragment: AbstractBottomSheetFragment(), KoinComponent, TestSupportDatabindingInterface, OnMapReadyCallback {
private lateinit var _dataBinding: ViewDataBinding
override fun dataBinding(): ViewDataBinding? = _dataBinding
private val viewModel: LocationSelectionViewModel by viewModel()
//Ma Objects n Variables
private val LOCATION_PERMISSION = 42
private lateinit var map: GoogleMap
private var mapView: MapView? = null
private val fusedLocationClient: FusedLocationProviderClient by inject { parametersOf(activity!!) }
private lateinit var locationCallback: LocationCallback
Подробнее здесь: https://stackoverflow.com/questions/570 ... y-injectio
Мобильная версия