【问题标题】:Best way to mask dynamic data (timestamps) using ScalaTest使用 ScalaTest 屏蔽动态数据(时间戳)的最佳方法
【发布时间】:2014-10-01 04:24:58
【问题描述】:

我正在使用 ScalaTest 进行单元测试。我有一个可能如下所示的测试结果 (JSON)。实际结果是巨大而复杂的。这是一个例子。

[{"name":"George", "when":143828333, ...}, {"name":"Fred", "when":14857777, ... }]

“when”字段值是动态的,并且会随着测试的变化(即当前时间戳)而变化,因此我无法针对这些进行测试。我可以使用一些正则表达式来掩盖这些,基本上用一些惰性令牌替换它们。

ScalaTest 有更优雅的方式来处理这样的动态数据位吗?

【问题讨论】:

  • 在典型设置中,您将模拟生成这些值的模块。

标签: regex scala scalatest


【解决方案1】:

您可以为要比较的类型自定义 Equality。您的自定义 Equality 可以忽略相等比较的动态字段。关于平等的信息在这里:

http://doc.scalatest.org/2.2.0/index.html#org.scalactic.Equality

您需要做的就是定义 areEqual 方法,然后将其设为隐式。所以 Equality[JsonType] 或 Equality[String],无论是什么类型。这将被 === 运算符和断言中的相等匹配器拾取。

【讨论】:

    【解决方案2】:

    在这种情况下,我过去多次做过的事情正是您所建议的:使用正则表达式将日期替换为常数,这样您的比较就会起作用。

    【讨论】:

      猜你喜欢
      • 2022-01-20
      • 2012-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-22
      • 2012-05-25
      • 1970-01-01
      相关资源
      最近更新 更多