Scala Value classes and Mockito Matchers don't play together
mockito, scala
Solution
Assuming that the NPE happens on the Mockito.when-line I'd guess it is because the value classes are implemented as actually passing around the primitive and then replacing method calls on it with static methods while Mockito wants to call equals on an object, or something like that. If that is the reason then maybe you could implement your own matcher in Scala to work around it.
Problem
Using Scala's value classes with Mockito Mocks (Matchers) results in a NullPointerException, see this example: ``` import org.scalatest.FunSuite import org.scalatest.mock.MockitoSugar._ import org.mockito.{Matchers, Mockito} class Id(val underlying: Int) extends AnyVal class MockitoValueClassSuite extends FunSuite { trait Sample { def doIt(id: Id) : Int } test("Check value classes in scala with mockito") { val sampleMock = mock[Sample] val id = new Id(1) Mockito.when(sampleMock.doIt(Matchers.eq(id))).thenReturn(5) assert(sampleMock.doIt(id) == 5) } } ``` Results in: ``` java.lang.NullPointerException was thrown. java.lang.NullPointerException at net.gutefrage.service.user.service.MockitoValueClassSuite$$anonfun$1.apply$mcV$sp(MockitoValueClassSuite.scala:21) at net.gutefrage.service.user.service.MockitoValueClassSuite$$anonfun$1.apply(MockitoValueClassSuite.scala:16) at net.gutefrage.service.user.service.MockitoValueClassSuite$$anonfun$1.apply(MockitoValueClassSuite.scala:16) at org.scalatest.Transformer$$anonfun$apply$1.apply(Transformer.scala:22) ``` Any hints what can be done here?