Daniele Andreoli
08/01/2024, 9:13 AM@MockK
lateinit var mockAnalyticsReporters: List<AnalyticsReporter?>
when using this I recieve this strange error:
class kotlin.Unit cannot be cast to class java.lang.Boolean (kotlin.Unit is in unnamed module of loader 'app'; java.lang.Boolean is in module java.base of loader 'bootstrap')
java.lang.ClassCastException: class kotlin.Unit cannot be cast to class java.lang.Boolean (kotlin.Unit is in unnamed module of loader 'app'; java.lang.Boolean is in module java.base of loader 'bootstrap')
at io.mockk.renamed.java.util.Iterator$Subclass5.hasNext(Unknown Source)
I actually can’t understand what this means. I’m not a very well tester so i need some help. Thanks.Mattia Tommasone
08/01/2024, 9:26 AMDaniele Andreoli
08/01/2024, 9:34 AMcoEvery { mockAnalyticsReporters.logAnalyticEvent(mockEvent) } answers { }
where`mockEvent` is :
@MockK
lateinit var mockEvent : AnalyticsEvent
Daniele Andreoli
08/01/2024, 9:34 AMfun <T : AnalyticsReporter> List<T?>.logAnalyticEvent(event: AnalyticsEvent) = forEach { reporter ->
reporter?.logEvent(event)
}
Mattia Tommasone
08/01/2024, 9:34 AManswers
block doesn’t look right to me
does logAnalyticEvent
return Boolean?Mattia Tommasone
08/01/2024, 9:35 AManswers
blockDaniele Andreoli
08/01/2024, 9:35 AMDaniele Andreoli
08/01/2024, 9:37 AMat io.mockk.renamed.java.util.Iterator$Subclass5.hasNext(Unknown Source)
Mattia Tommasone
08/01/2024, 9:38 AMMattia Tommasone
08/01/2024, 9:38 AMList
class behaves as you expectDaniele Andreoli
08/01/2024, 9:42 AMMattia Tommasone
08/01/2024, 9:44 AMval mockAnalyticsReporters = listOf(mockk<AnalyticsReporter>())
Daniele Andreoli
08/01/2024, 9:45 AMKlitos Kyriacou
08/01/2024, 11:05 AMfun <T : AnalyticsReporter> List<T?>.logAnalyticEvent(event: AnalyticsEvent) = forEach { ... }
and the forEach
call relies on the receiver list's iterator's hasNext
. But you've mocked that receiver and haven't told the mock what to do with iterator()
and hasNext()
.Daniele Andreoli
08/01/2024, 11:23 AM