- Test that when calling
underTest.subscribe()
that it verifies the function here is actually called.
subscription.subscribe("nats-msg-events", ::process)
- 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) }
}
}
}
})