Skip to content

Cannot mock boxed (primitive?) types #533

Description

@wegendt-bosch

Previously worked in version 5.1.0.

This test fails:

@ExtendWith(MockitoExtension::class)
class MockitoTest {
  class Consumer<T>(val fn: (T) -> Unit)
  class Mocked {
    fun <T> callConsumer(consumer: Consumer<T>, value: T) {
      consumer.fn(value)
    }
  }

  @Mock
  private lateinit var mocked: Mocked

  @Test
  fun testPrimitives() {
    var functionCalled = false
    val aConsumer = Consumer<UShort> {}
    whenever(mocked.callConsumer(same(aConsumer), any())).then { functionCalled = true }

    mocked.callConsumer(aConsumer, 42u)
    assertTrue(functionCalled)
  }
}

but works when you change the type parameter to Short:

@ExtendWith(MockitoExtension::class)
class MockitoTest {
  class Consumer<T>(val fn: (T) -> Unit)
  class Mocked {
    fun <T> callConsumer(consumer: Consumer<T>, value: T) {
      consumer.fn(value)
    }
  }

  @Mock
  private lateinit var mocked: Mocked

  @Test
  fun testPrimitives() {
    var functionCalled = false
    val aConsumer = Consumer<Short> {}
    whenever(mocked.callConsumer(same(aConsumer), any())).then { functionCalled = true }

    mocked.callConsumer(aConsumer, 42)
    assertTrue(functionCalled)
  }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions