У меня есть следующий код для получения текущей системной памяти:
val memClass = (context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager).memoryClass
Моя первоначальная цель - вернуть значение Int
для него при тестировании. Как то так:
whenever((context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager).memoryClass)
.thenReturn(500)
Так как это тест jUnit и включает использование Context
, я закончил издеваться над всем:
val context: Context = mock()
val activityService: Service = mock()
whenever(context.getSystemService(Context.ACTIVITY_SERVICE))
.thenReturn(activityService)
whenever((context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager).memoryClass)
.thenReturn(500)
Теперь проблема в том, что Mockito
не может создать тип-трансляцию для ActivityManager
и выдает эту ошибку:
java.lang.ClassCastException: android.app.Service$MockitoMock$594525704 cannot be cast to android.app.ActivityManager
Я также пытался насмехаться над ActivityManager, но его нельзя использовать в качестве набора типов:
![enter image description here](https://i.stack.imgur.com/Kp2Dp.png)
У меня нет особых требований придерживаться текущего решения. Я буду признателен за лучший подход к моей первоначальной цели.