如何在 Minitest 中验证包含更改日期和数字的字符串?

How can I validate a string that contains changing dates and numbers in Minitest?

假设我有一个字符串

text = "Date/Time\n19-May-21 10:43:35\nExpires\n19-Jun-2021 13:43\nPrice\n.00"

如何验证字符串是否存在,同时忽略字符串中的日期和价格,因为它们不断变化?

理想情况下,我想验证是否显示了整数或日期时间,但值并不重要。

一些策略和高级示例

您有几个基本策略可供您选择:

  1. 使用像 TimeCop 这样的 gem 来修复测试的时间戳。
  2. 使用夹具数据测试应用程序的逻辑,而不是使用真实(或至少是动态)数据。
  3. 使用工厂数据为每个测试生成一个已知值。
  4. 测试结果的格式结构,而不是特定元素。

作为最后一个基本示例,我们假设您的数据始终具有相同数量的字段并使用 /n 而不是换行符作为分隔符。您可以构建测试以验证:

  • /n 拆分时返回的字段数符合您的预期。
  • 第 4 个字段是有效的 Date 或 DateTime 对象。
  • 第 6 个或最后一个字段仅包含 /^$\d+\.?\d*$/,或字符串的结构或内容的一些其他验证。

通过这些类型的测试,您验证的是结构而不是特定值,这可能就足够了。如果您需要测试值,那么您需要使用不同的策略,允许您提前定义预期值。