kotlinmockkmockk-verify

Mockk matching and overloaded function withArg


Hello I am trying to find a way to match an overloaded function inside of the verify using withArg

The doc doesnt really point this out

    every { getResponse.Ids } returns listOf(121212L)
    assert( client.getExtIds(Ids) )
    verify {
        client.getExtIdsCall().call(
            withArg {
                assertEquals(GetExtIdsRequest.builder()
                    .withIds("foo")
                    .withType("bar")
                    .build().hashCode(), it.hashCode()
                )
            }
        )
    }

Something like above. But unfortunately I cant because the client.getExtIdsCall().call() accepts two different types of objects. One of which has the hashCode I want. So the it can not be referred correctly to call the hashCode function


Solution

  • You can resolve this by explicitly specifying the type parameter of function withArg, e.g. if you want your parameter to be a Long, you can write:

    withArg<Long> { ... }