我想通过测试来介绍一个抛出异常的情况。我试过传递一个不正确的输入,但仍然没有运气。
在Kotest中,当函数被调用时,我们可以显式地抛出异常吗?
我在Kotest Doc中找不到任何文档来涵盖此场景:
主文件.kt
parseEvent(input).forEach { event ->
try {
eventsProcessor(event)
} catch (ex: Exception) {
log.error { ex }
batchItemFailures.add(SQSBatchResponse.BatchItemFailure(event.msgId))
}
}
private fun eventsProcessor(event: Event<*>) {
try {
when (event.type) {
"xyz" -> dailyprocess()
else -> log.warn { "Unknown event type: ${event.type}" }
}
} catch (ex: Exception) {
log.error { ex }
throw ex
}
}
测试.kt
describe("Event parsing") {
context("when event is just a map") {
val event = mapOf(
"Records" to listOf(
mapOf("body" to "jsonBody1")))
it("parses and process event") {
handler.handleRequest(event, createTestContext())
val exception = shouldThrow<Exception> {
dailyprocess(Instant.now())
}
}
}
}
1条答案
按热度按时间xbp102n01#
当然可以,这里有一个最小的例子:
假设您有一个在失败时抛出错误(
IllegalStateException
)的实现:然后,您可以使用以下命令对此进行测试:
您可以在此处阅读有关测试异常的信息:https://kotest.io/docs/assertions/exceptions.html