Skip to content

Mocking method return Any as type throws Exception #254

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
Vrolijkx opened this issue Jun 18, 2020 · 2 comments
Closed

Mocking method return Any as type throws Exception #254

Vrolijkx opened this issue Jun 18, 2020 · 2 comments

Comments

@Vrolijkx
Copy link

The below example code explains the issue.
Reproducible in version 1.14.7

import org.mockito.scalatest.MockitoSugar
import org.scalatest.flatspec.AnyFlatSpec

class SomeClassToMock {
  def methodReturningAny(input: String): Any = None
}

class AnyReturnMockTest extends AnyFlatSpec with MockitoSugar {
  "mocking method returning Any" should "not explode" in {
    val myMock = mock[SomeClassToMock]

    //will explode with 
    // java.lang.ClassNotFoundException: scala.Any
    // because it tries to instatiate Any at org/mockito/ReflectionUtils.scala:57
    when(myMock.methodReturningAny("test"))
      .thenReturn("some value")
  }
}

stackTrace encountered:

scala.Any
java.lang.ClassNotFoundException: scala.Any
	at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:348)
	at scala.reflect.runtime.JavaMirrors$JavaMirror.javaClass(JavaMirrors.scala:596)
	at scala.reflect.runtime.JavaMirrors$JavaMirror.$anonfun$classToJava$1(JavaMirrors.scala:1272)
	at scala.reflect.runtime.TwoWayCaches$TwoWayCache.$anonfun$toJava$1(TwoWayCaches.scala:61)
	at scala.reflect.runtime.TwoWayCaches$TwoWayCache.toJava(TwoWayCaches.scala:57)
	at scala.reflect.runtime.JavaMirrors$JavaMirror.classToJava(JavaMirrors.scala:1264)
	at scala.reflect.runtime.JavaMirrors$JavaMirror.runtimeClass(JavaMirrors.scala:236)
	at scala.reflect.runtime.JavaMirrors$JavaMirror.runtimeClass(JavaMirrors.scala:69)
	at org.mockito.ReflectionUtils$InvocationOnMockOps$.$anonfun$resolveWithScalaGenerics$3(ReflectionUtils.scala:57)
	at scala.Option.map(Option.scala:230)
	at org.mockito.ReflectionUtils$InvocationOnMockOps$.resolveWithScalaGenerics$extension(ReflectionUtils.scala:57)
	at org.mockito.ReflectionUtils$InvocationOnMockOps$.returnType$extension(ReflectionUtils.scala:46)
	at org.mockito.stubbing.ReturnsSmartNulls$.$anonfun$apply$1(ReturnsSmartNulls.scala:17)
	at scala.Option.orElse(Option.scala:447)
	at org.mockito.stubbing.ReturnsSmartNulls$.apply(ReturnsSmartNulls.scala:16)
	at org.mockito.stubbing.ReturnsSmartNulls$.apply(ReturnsSmartNulls.scala:12)
	at org.mockito.stubbing.DefaultAnswer.answer(DefaultAnswer.scala:12)
	at org.mockito.stubbing.DefaultAnswer.answer$(DefaultAnswer.scala:12)
	at org.mockito.stubbing.ReturnsSmartNulls$.answer(ReturnsSmartNulls.scala:12)
	at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:103)
	at org.mockito.internal.handler.ScalaMockHandler.handle(ScalaMockHandler.scala:36)
	at org.mockito.internal.handler.ScalaNullResultGuardian.handle(ScalaNullResultGuardian.scala:10)
	at org.mockito.internal.handler.InvocationNotifierHandler.handle(InvocationNotifierHandler.java:33)
	at org.mockito.internal.creation.bytebuddy.MockMethodInterceptor.doIntercept(MockMethodInterceptor.java:61)
	at org.mockito.internal.creation.bytebuddy.MockMethodInterceptor.doIntercept(MockMethodInterceptor.java:49)
	at org.mockito.internal.creation.bytebuddy.MockMethodInterceptor$DispatcherDefaultingToRealMethod.interceptSuperCallable(MockMethodInterceptor.java:108)
	at com.restore.opscockpit.gateway.controllers.opc.SomeClassToMock$MockitoMock$53716881.methodReturningAny(Unknown Source)
	at com.restore.opscockpit.gateway.controllers.opc.AnyReturnMockTest.$anonfun$new$1(AnyReturnMockTest.scala:16)
...
@Vrolijkx
Copy link
Author

Vrolijkx commented Jun 18, 2020

Looks to be a regression introduced here:
ef4d2a1#diff-80aa179e011e2fa3d08daca9d7467f28

@ultrasecreth
Copy link
Member

@Vrolijkx oh wow, I'll take a look as soon as I can

# 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