Skip to content

NPE caused by mocking a generic method multiple times #256

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Closed
dangerousben opened this issue Jun 23, 2020 · 0 comments
Closed

NPE caused by mocking a generic method multiple times #256

dangerousben opened this issue Jun 23, 2020 · 0 comments

Comments

@dangerousben
Copy link
Contributor

dangerousben commented Jun 23, 2020

https://scastie.scala-lang.org/7u0vppwoQJCB3nR7dxmdQA

import org.mockito.{ ArgumentMatchersSugar, IdiomaticMockito, MockitoScalaSession }
import IdiomaticMockito._
import ArgumentMatchersSugar._

trait Foo {
  def test[A](a: A): A
}

object Test  {
  def apply() =
    MockitoScalaSession().run {
      val foo = mock[Foo]
      foo.test[String](argThat((s: String) => s.startsWith("foo"))) returns "foo"
      foo.test[Int](argThat((n: Int) => n > 10)) returns 42
    }
}

Test()
java.lang.ExceptionInInitializerError
	at Main$.<clinit>(main.scala:25)
	at Main.main(main.scala)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at sbt.Run.invokeMain(Run.scala:115)
	at sbt.Run.execute$1(Run.scala:79)
	at sbt.Run.$anonfun$runWithLoader$4(Run.scala:92)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
	at sbt.util.InterfaceUtil$$anon$1.get(InterfaceUtil.scala:10)
	at sbt.TrapExit$App.run(TrapExit.scala:257)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
	at Playground$Test$$anonfun$apply$1$$anonfun$apply$2.matches(main.scala:15)
	at Playground$Test$$anonfun$apply$1$$anonfun$apply$2.matches(main.scala:15)
	at org.mockito.matchers.ThatMatchers.$anonfun$argThat$1(ThatMatchers.scala:12)
	at org.mockito.matchers.ThatMatchers.$anonfun$argThat$1$adapted(ThatMatchers.scala:12)
	at org.mockito.matchers.ThatMatchers$$anon$1.matches(ThatMatchers.scala:20)
	at org.mockito.internal.invocation.TypeSafeMatching.apply(TypeSafeMatching.java:24)
	at org.mockito.internal.invocation.MatcherApplicationStrategy.forEachMatcherAndArgument(MatcherApplicationStrategy.java:83)
	at org.mockito.internal.invocation.InvocationMatcher.argumentsMatch(InvocationMatcher.java:151)
	at org.mockito.internal.invocation.InvocationMatcher.matches(InvocationMatcher.java:80)
	at org.mockito.MockitoScalaSession$MockitoScalaSessionListener.$anonfun$reportIssues$4(MockitoScalaSession.scala:126)
	at org.mockito.MockitoScalaSession$MockitoScalaSessionListener.$anonfun$reportIssues$4$adapted(MockitoScalaSession.scala:126)
	at scala.collection.immutable.Set$Set1.exists(Set.scala:169)
	at org.mockito.MockitoScalaSession$MockitoScalaSessionListener.$anonfun$reportIssues$3(MockitoScalaSession.scala:126)
	at org.mockito.MockitoScalaSession$MockitoScalaSessionListener.$anonfun$reportIssues$3$adapted(MockitoScalaSession.scala:126)
	at scala.collection.immutable.Set$Set1.filterImpl(Set.scala:172)
	at scala.collection.immutable.Set$Set1.filterImpl(Set.scala:156)
	at scala.collection.StrictOptimizedIterableOps.filterNot(StrictOptimizedIterableOps.scala:219)
	at scala.collection.StrictOptimizedIterableOps.filterNot$(StrictOptimizedIterableOps.scala:219)
	at scala.collection.immutable.Set$Set1.filterNot(Set.scala:156)
	at org.mockito.MockitoScalaSession$MockitoScalaSessionListener.reportIssues(MockitoScalaSession.scala:126)
	at org.mockito.MockitoScalaSession.$anonfun$finishMocking$3(MockitoScalaSession.scala:37)
	at org.mockito.MockitoScalaSession.$anonfun$finishMocking$3$adapted(MockitoScalaSession.scala:34)
	at scala.Option.fold(Option.scala:263)
	at org.mockito.MockitoScalaSession.finishMocking(MockitoScalaSession.scala:34)
	at org.mockito.MockitoScalaSession.run(MockitoScalaSession.scala:56)
	at Playground$Test$.apply(main.scala:13)
	at Playground$.<clinit>(main.scala:20)
	... 13 more
ultrasecreth added a commit that referenced this issue Aug 22, 2020
ultrasecreth added a commit that referenced this issue Aug 22, 2020
* Fixes Issue #256

* Make it work in Scala 2.11
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants