Niel de Wet
Niel de Wet

Reputation: 8398

How to verify kotlin varargs function using mockito

I have a kotlin function of this form in an interface:

fun foo(bar: String, vararg baz: Pair<String, ByteArray>):Boolean

Using Mockito to mock this interface, how do I verify that this function was called with no Pairs?

It doesn't work leaving the second matcher off, because then Mockito complains that it needs two matchers.

Using any any*() matcher, including anyVararg(), fails because of typing.

Upvotes: 2

Views: 2296

Answers (1)

GhostCat
GhostCat

Reputation: 140467

A non-answer to give some inspiration:

Keep in mind that Mockito doesn't know or care what you are writing in some Kotlin source code file.

Mockito only deals with the compiled byte code. In other words: Mockito looks into the final classfile; created by the kotlin compiler.

Thus: your first stop should be javap to disassemble the class file that contains that method definition. You check the signature of the method there; and that should tell you how to specify correct argument matchers to Mockito.

And just another idea: java varargs translate arrays. So "no" args means: an empty array. So you probably want to match specifically on something like empty array of Pairs.

Upvotes: 2

Related Questions