假设我有这样的代码:
final case class CustomException(errorCode: Int, id: UUID) extends Throwable
val logic: ZIO[Any, Throwable, Unit] = ???
我想使用ZIO测试来检查特定的错误情况
val checkForTimeout = testM("Logic should time out") {
for {
result <- logic.flip
} yield assert(result, isSubtype[CustomException](???))
}
我想做的是检查
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)))
)
}
关于scala - 如何断言错误类型中的单个字段?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59535069/