1

I'm having a strange behaviour while stubbing method that takes case classes as parameters.

I'm still trying to understand why, but in one case I'm getting a

You cannot use argument matchers outside of verification or stubbing.
Examples of correct usage of argument matchers:
    when(mock.get(anyInt())).thenReturn(null);
    doThrow(new RuntimeException()).when(mock).someVoidMethod(anyObject());
    verify(mock).someMethod(contains("foo"))

When stubbing like this

simpleTrait.anotherMethod(any[Param]) returns "Mock String"

and I have to change it like this

simpleTrait.anotherMethod(Param(anyInt)) returns "Mock String"

Where

case class Param(val: Int)

and

trait SimpleTrait {
  def anotherMethod(someParam: Param): String
}

Both the behaviour seems equivalent, though.

Any Ideas?

Gabriele Petronella
  • 102,227
  • 20
  • 204
  • 227
Luca Molteni
  • 4,686
  • 5
  • 28
  • 40

0 Answers0