MockitoMockMaker throws NPE, whne try to check for a mock on a null object.
class TestSpec extends Specification {
interface Parent {
Child getChild()
}
interface Child {
String getName()
}
def "NPE when stubbing method on null returned from unstubbed mock chain"() {
given:
def parent = Mock(Parent)
// parent.getChild() is not stubbed, so it returns null
def child = parent.getChild()
when:
// This line triggers the bug:
// Spock 2.4 stable calls asMockOrNull(child) where child is null,
// MockitoMockMaker passes null to Mockito's getHandler(), NPE
child.getName() >> "Alice"
then:
true
}
}
It throws:
java.lang.NullPointerException
at org.mockito.internal.util.concurrent.WeakConcurrentMap.get(WeakConcurrentMap.java:57)
at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.getHandler(InlineDelegateByteBuddyMockMaker.java:522)
at org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.getHandler(InlineByteBuddyMockMaker.java:67)
at org.spockframework.mock.runtime.mockito.MockitoMockMakerImpl.asMockOrNull(MockitoMockMakerImpl.java:91)
at org.spockframework.mock.runtime.mockito.MockitoMockMaker.asMockOrNull(MockitoMockMaker.java:78)
at org.spockframework.mock.runtime.MockMakerRegistry.asMockOrNull(MockMakerRegistry.java:194)
at org.spockframework.mock.MockUtil.asMockOrNull(MockUtil.java:85)
at org.spockframework.mock.constraint.TargetConstraint.setInteraction(TargetConstraint.java:54)
at org.spockframework.mock.runtime.MockInteraction.<init>(MockInteraction.java:63)
at org.spockframework.mock.runtime.InteractionBuilder.build(InteractionBuilder.java:187)
at org.spockframework.mock.TestSpec.NPE when stubbing method on null returned from unstubbed mock chain(TestSpec.groovy:42)
Discussed in #2336
MockitoMockMaker throws NPE, whne try to check for a mock on a
nullobject.It throws:
Discussed in #2336