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

ScalaMock使用MockFunction1时如何带公差匹配含Double字段的入参

ScalaMock MockFunction1入参Double字段带公差匹配实现方案
  • 核心思路:不直接传入固定预期对象做全等匹配,使用ScalaMock提供的where方法自定义入参匹配逻辑,对Double字段增加公差判断

步骤1:编写自定义比较逻辑

先实现两个Result对象的比对方法,对嵌套的Double字段做带公差的比较,非Double字段可直接做全等匹配:

def isResultMatch(expected: Result, actual: Result, tolerance: Double = 0.01): Boolean = {
  // 非Double字段直接全等匹配,按需添加
  expected.其他非Double字段 == actual.其他非Double字段 &&
  // Double字段带公差匹配
  Math.abs(expected.m.a - actual.m.a) < tolerance &&
  Math.abs(expected.m.b - actual.m.b) < tolerance
}

步骤2:替换原有调用验证写法

将原来直接传固定result的写法替换为自定义匹配逻辑:

// 构造你预期的Result对象
val expectResult: Result = ???

mockFunction.expects(where { actualResult: Result =>
  isResultMatch(expectResult, actualResult)
}).once()

可选优化

如果需要复用公差匹配逻辑,也可以单独封装Double的比较方法:

def doubleEquals(actual: Double, expect: Double, tolerance: Double = 0.01): Boolean = 
  Math.abs(actual - expect) < tolerance

后续新增Double字段比对时直接调用该方法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:33:02