Tim*_*ach 2 scala zio zio-test
假设我有这样的代码:
final case class CustomException(errorCode: Int, id: UUID) extends Throwable
val logic: ZIO[Any, Throwable, Unit] = ???
Run Code Online (Sandbox Code Playgroud)
我想使用 ZIO Test 来检查特定的错误情况
val checkForTimeout = testM("Logic should time out") {
for {
result <- logic.flip
} yield assert(result, isSubtype[CustomException](???))
}
Run Code Online (Sandbox Code Playgroud)
我想做的是检查该errorCode字段的特定值。但 ZIO Test 中现有的组合器似乎只允许我检查完整的对象。我只想_.errorCode在忽略时检查_.id,这意味着equalTo对于这个用例来说不是一个足够好的组合器。
我该如何解决这个问题?
您可以使用Assertion.hasField,它可以让您“放大”较大结构的一部分来执行此操作。
val checkForTimeout = testM("Logic should time out") {
for {
result <- logic.flip
} yield assert(
result,
isSubtype[CustomException](hasField("errorCode", _.errorCode, equalTo(1)))
)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
518 次 |
| 最近记录: |