0
  1. Test that when calling
underTest.subscribe() 

that it verifies the function here is actually called.

subscription.subscribe("nats-msg-events", ::process)
  1. Test that when calling
underTest.process(msg, connection) 

that it verifies the functions here are actually called.

service.process(msg)
connection.publish(msg.headers.replyToOrThrow(), "ok".toByteArray(Charsets.UTF_8))

Class

class Processor(
    private val subscription: Subscription,
    private val service: Service,
) {
    override fun subscribe() {
        subscription.subscribe("n-m-events", ::process)
    }

    fun process(msg: Message, connection: Connection) {
        service.process(msg)
        connection.publish(msg.headers.replyToOrThrow(), "ok".toByteArray(Charsets.UTF_8))
    }
}

Current test class

class ProcessorTest : BehaviorSpec({
    val subscription = mockk<Subscription>()
    val service = mockk<Service>()
    val connection = mockk<Connection>()
    val msg = mockk<DecodedMessage>()

    val underTest = Processor(
        subscription,
        service
    )

    Given("processing of message"){
        val randomReply = randomString()

        every { service.process(msg) } just runs

        When("Message is being processed"){
            Then("service is called with the decoded message"){
                underTest.process(msg, connection)
                verify { service.process(msg) }
            }
        }
    }
})

Dave Whyte
  • 39
  • 5

0 Answers0