Open nargov opened 9 years ago
Thanks for the tip. If I understand you correctly you're, not raising an issue with JMock? I nearly always use the ClassImposteriser.
It looks like we should add your Specs2-JMock project as a link in our readme.
You're correct, this is more of an issue with Scala-Java interop, but I just thought it had some bearing here, perhaps for documentation purposes.
I do like that the JavaReflectionImposteriser is the default and that using the ClassImposteriser has to be a conscious decision, since it doesn't work on Classes, and reminds me that I should strive to use mocking on interfaces, rather than concrete classes.
And that would be great!
Hi,
I've been writing a small integration library between JMock and specs2, since we love JMock here at Wix, but we write mostly in Scala now. I encountered an issue where the
JavaReflectionImposteriser
would fail to create a mock from a Scala trait that contains a function that returns a Scala Set. It fails because the Imposteriser uses JDKs Proxy which is unable to create the instance. This is due to Set having two apply methods:and
Since Java ignores Scala's way of creating parameter lists, it things both methods have the same signature but with different return types.
I have worked around this by creating a new
Imposteriser
, which uses theJavaReflectionImposteriser
, and if it fails because of that error, uses theClassImposteriser
instead.I just thought you guys might find this interesting.