首页 > 解决方案 > 如何验证 Minitest 中包含更改日期和数字的字符串?

问题描述

假设我有一个字符串

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

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

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

标签: rubywildcardstring-matchingminitest

解决方案


一些策略和高级示例

您有几个基本策略可供您使用:

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

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

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

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


推荐阅读