mockito-kotlin: Mockito 5.0 breaks vararg argument capture in Kotlin
Hence issue was wrongly put on the mockito project.
Have code:
class PreferencesRepository {
suspend fun getPreferences(
vararg preferences: String
): Map<String, Any>
{}
Write tests:
val preferencesRepository: PreferencesRepository = mock()
val preferencesCapture = argumentCaptor<String>()
whenever(preferencesRepository.getPreferences(anyVararg())) doReturn emptyMap()
verify(preferencesRepository).getPreferences(preferencesCapture.capture())
Run test and observe:
at PreferencesRepository.getPreferences(PreferecesRepository.kt:11)
Actual invocations have different arguments:
preferencesRepository.getPreferences(
[String, String]
);
About this issue
- Original URL
- State: closed
- Created a year ago
- Comments: 20 (8 by maintainers)
Commits related to this issue
- #474 Fix vararg argument matcher — committed to lukas-krecan/mockito-kotlin by lukas-krecan a year ago
- #474 Fix vararg argument matcher — committed to lukas-krecan/mockito-kotlin by lukas-krecan a year ago
- #474 Fix vararg argument matcher — committed to lukas-krecan/mockito-kotlin by lukas-krecan a year ago
- #474 Fix vararg argument matcher — committed to lukas-krecan/mockito-kotlin by lukas-krecan a year ago
This seems to be working. Please check the tests if they reflect your use-case.
This might help https://github.com/mockito/mockito-kotlin/pull/482/files#diff-1354c4c5b4595d316a42f5172d59654a6d90a1516f7b8ee0fd116ef45c3d3eb3R62
5.1.0 should be published later today
The original code still needs to be fixed - even it fails with a similar error. Please re-open.