KV
07/01/2022, 12:18 PMclass HeaderViewHolder(val binding: ViewholderGroupHeaderBinding) : BaseViewHolder(binding.root) {
private val eventTimeConverter: TimeFormatHelper by inject()
override fun bind(eventItem: EventItem) {
eventItem.group?.let { group ->
binding.headerTitle.apply {
text = resources.getString(
R.string.event_header_date_holder,
group.title,
if (eventItem.group.isAlwaysAvailable?.not() == true)
eventTimeConverter.formatTime(group.date)
else ""
)
}
}
}
}
The test looks like this
@Test
fun `test bind with event should set proper values to views`() {
// 1. Assemble
val group: Group = mockk()
val groupTitle = "title 1"
val groupDate = ZonedDateTime.now()
val formattedGroupDate = "2007-12-03T10:15:30+01:00 Europe/Paris"
every { group.isAlwaysAvailable } returns false
every { group.title } returns groupTitle
every { group.date } returns groupDate
val eventItem: EventItem = mockk()
every { eventItem.group } returns group
every { timeFormatHelper.formatTime(groupDate) } returns formattedGroupDate
every {
resources.getString(R.string.event_header_date_holder, any(), any())
} returns "$groupTitle $formattedGroupDate"
val headerTv: TextView = itemView.headerTitle
every { itemView.headerTitle.resources } returns resources
// 2. Act
subject.bind(eventItem)
// 3. Assert
verify { headerTv.text = "$groupTitle $formattedGroupDate" }
confirmVerified(headerTv)
}
The issue is io.mockk.MockKException: no answer found for: Resources(resources#7).getString(<tel:2131951777|2131951777>, [title 1, 2007-12-03T10:15:30+01:00 Europe/Paris])
I tried to use like below:
every {
resources.getString(R.string.event_header_date_holder, any(), any())
} returns "$groupTitle $formattedGroupDate"
but no luck