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

ScalaTest中匹配Some(任意Long值)的正确写法是什么

错误原因

你写法出错的核心原因是any[Long]是Mockito提供的参数匹配器,仅用于打桩时的入参匹配场景,不能直接作为值断言的占位符使用。直接在shouldBe参数中调用any[Long]时,该方法会直接返回null,因此你的代码实际等价于response shouldBe Some(null),和实际返回的Some(1635758033586)自然匹配失败。

正确实现方式

以下是几种不需要额外依赖的原生ScalaTest实现,都可以满足需求:

方式1:模式匹配写法(最直观)

直接匹配结构和类型,一行完成校验:

// 需提前引入org.scalatest.matchers.should.Matchers._
response should matchPattern { case Some(_: Long) => }

方式2:分步校验(可读性最高)

先校验是Some类型,再校验内部值类型,适合需要拆分定位问题的场景:

response shouldBe defined // 校验为非空的Some类型
response.get shouldBe a[Long] // 校验内部值是Long类型

方式3:Option匹配器组合写法

用Option专属的contain匹配器组合类型校验:

// 同样需要引入上述Matchers依赖
response should contain (a[Long])

内容的提问来源于stack exchange,提问作者Mandroid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:36:04