ruby - 如何验证 Minitest 中包含更改日期和数字的字符串?
问题描述
假设我有一个字符串
text = "Date/Time\n19-May-21 10:43:35\nExpires\n19-Jun-2021 13:43\nPrice\n$2.00"
我如何验证字符串是否存在,同时又从字符串中省略日期和价格,因为它们在不断变化?
理想情况下,我想验证是否显示了整数或日期时间,但该值并不重要。
解决方案
一些策略和高级示例
您有几个基本策略可供您使用:
- 使用像 TimeCop 这样的 gem 来修复测试的时间戳。
- 使用夹具数据来测试应用程序的逻辑,而不是使用真实(或至少是动态)数据。
- 使用工厂数据为每个测试生成一个已知值。
- 测试结果的格式或结构,而不是特定元素。
作为最后一个基本示例,我们假设您的数据始终具有相同数量的字段并使用/n
而不是换行符作为分隔符。您可以构建您的测试来验证:
- 拆分时返回的字段数
/n
是您所期望的。 - 第 4 个字段是有效的 Date 或 DateTime 对象。
- 第 6 个或最后一个字段仅包含
/^\$\d+\.?\d*$/
,或对字符串的结构或内容进行的一些其他验证。
使用这些类型的测试,您正在验证结构而不是特定值,这可能就足够了。如果您需要测试值,则需要使用不同的策略来提前定义预期值。
推荐阅读
- wordpress - wordpress多站点上的用户登录问题
- python - 如何将更新后的 current_number 传递给现有变量
- android - 避免快速点击两个按钮android
- c# - 在c#中将数据行字符串转换为十进制
- postgresql - 如何在 ODOO 中查看已保存的密码?
- reactjs - useState hook:根据另一个刚刚更新的状态更新一个状态
- apache-flink - apache-flink 中是否有 Misra-Gries 实现的参考?
- java - 谁能解释下面的代码它是如何工作的?
- gridview - 如何设置颤振表格单元格的背景颜色?
- php - 通过walker php的汉堡菜单不适用