如何在 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"
如何验证字符串是否存在,同时忽略字符串中的日期和价格,因为它们不断变化?
理想情况下,我想验证是否显示了整数或日期时间,但值并不重要。
一些策略和高级示例
您有几个基本策略可供您选择:
- 使用像 TimeCop 这样的 gem 来修复测试的时间戳。
- 使用夹具数据测试应用程序的逻辑,而不是使用真实(或至少是动态)数据。
- 使用工厂数据为每个测试生成一个已知值。
- 测试结果的格式或结构,而不是特定元素。
作为最后一个基本示例,我们假设您的数据始终具有相同数量的字段并使用 /n
而不是换行符作为分隔符。您可以构建测试以验证:
/n
拆分时返回的字段数符合您的预期。
- 第 4 个字段是有效的 Date 或 DateTime 对象。
- 第 6 个或最后一个字段仅包含
/^$\d+\.?\d*$/
,或字符串的结构或内容的一些其他验证。
通过这些类型的测试,您验证的是结构而不是特定值,这可能就足够了。如果您需要测试值,那么您需要使用不同的策略,允许您提前定义预期值。
假设我有一个字符串
text = "Date/Time\n19-May-21 10:43:35\nExpires\n19-Jun-2021 13:43\nPrice\n.00"
如何验证字符串是否存在,同时忽略字符串中的日期和价格,因为它们不断变化?
理想情况下,我想验证是否显示了整数或日期时间,但值并不重要。
一些策略和高级示例
您有几个基本策略可供您选择:
- 使用像 TimeCop 这样的 gem 来修复测试的时间戳。
- 使用夹具数据测试应用程序的逻辑,而不是使用真实(或至少是动态)数据。
- 使用工厂数据为每个测试生成一个已知值。
- 测试结果的格式或结构,而不是特定元素。
作为最后一个基本示例,我们假设您的数据始终具有相同数量的字段并使用 /n
而不是换行符作为分隔符。您可以构建测试以验证:
/n
拆分时返回的字段数符合您的预期。- 第 4 个字段是有效的 Date 或 DateTime 对象。
- 第 6 个或最后一个字段仅包含
/^$\d+\.?\d*$/
,或字符串的结构或内容的一些其他验证。
通过这些类型的测试,您验证的是结构而不是特定值,这可能就足够了。如果您需要测试值,那么您需要使用不同的策略,允许您提前定义预期值。