0

I get an error when running the below test.

@ExtendWith(MockKExtension::class)
class SenderServiceTest {

   @MockK
   lateinit var kafkaService: KafkaService<KeyType, MessageType>


   @Test
   fun `Send message`() {
      val key = KeyType()
      val value = MessageType()
      verify(kafkaService).send(key, value)
   }
}

@Service
@ConditionalOnProperty(name = ["kafka.enabled"])
class KafkaService<K, V>(val producerFactory: ProducerFactory<K, V>, val names: KafkaNames) {

   fun send(key: K, value: V) {
     // some code to send the message.
   }

}

The error is

org.mockito.exceptions.misusing.NotAMockException: 
Argument passed to verify() is of type KafkaService and is not a mock!
Make sure you place the parenthesis correctly!

I am not sure why it says the mock bean is not a mock. Someone can help to figure it out?

Lesiak
  • 22,088
  • 2
  • 41
  • 65
ever alian
  • 1,028
  • 3
  • 15
  • 45

1 Answers1

1

You are using 2 mocking frameworks in one test. You need to use verify belonging to framework you used to construct the mock.

Check verify in MockK guidebook:

Mockito

// Mockito
val mockedFile = mock(File::class.java)

mockedFile.read()
verify(mockedFile).read()

MockK:

// MockK
val mockedFile = mockk<File>()

mockedFile.read()
verify { mockedFile.read() }
Lesiak
  • 22,088
  • 2
  • 41
  • 65