You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ZIO 2中用ZIO Test测试失败Effect错误通道,此写法是否最符合惯例?

ZIO 2中测试失败Effect的惯用写法优化建议

你当前的测试写法是有效的,但ZIO 2提供了更符合惯用风格的简洁写法,无需手动处理Exit值。

优化后的测试代码

def spec = suite("LookupPositionProviderSpec")(
  suite("determinePosition")(
    test("Unknown hints lead to 'NoPositionDetermined'") {
      assertZIO(LookupPositionProvider.determinePosition(Seq(GsmFixtures.cellHintTowerGsm1.copy(cid = 4711))))(
        fails(
          equalTo(
            ProviderError(
              Lookup,
              NoPositionDetermined,
              Some("No position could be determined from List(CellHint(GSM,4711,Some(5891),Some(-70),None,None,None))")
            )
          )
        )
      )
    }.provide(TestLayers.findsNothingLookupPositionProvider)
  )
)

ZIO 2的主要变化

相比旧版ZIO,ZIO 2的zio-test库简化了失败场景的测试流程:

  • 新增assertZIO函数,可直接对Effect的结果(成功或失败)做断言,无需手动调用.exit获取退出状态
  • 原有的fails断言可直接配合assertZIO使用,无需额外处理Exit.Failure的包装逻辑
  • 整体代码结构更紧凑,可读性更强,符合函数式测试的惯用风格

内容的提问来源于stack exchange,提问作者Chris W.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 01:40:31