我正在编写一个简单的CanadaPost价格运输API,其价格以表格形式在PDF文档中给出(参见https://www.canadapost.ca/tools/pg/prices/SBParcels-e.pdf的第3页)。
将数据提取到csv文件并导入数据库(表价格具有列 weight , rate_code 和 date < / em>的)。模型和控制器非常简单:它们采用权重, rate_code 和 date 并查询价格表。
我正在尝试创建一套测试,测试该图表中每个价格的存在和正确性。它必须是通用的并且可重复使用,因为数据每年都在变化。
我想到了一些想法:
1)读取用于将数据导入数据库的相同csv文件,并创建一个环绕所有行和列的RSpec示例,并测试返回的价格。
2)将csv文件转换为价格控制器的灯具并测试每个灯具。
我也很难对这些测试进行分类。它们不是单元测试,但它们真的是功能/功能测试吗?它们听起来更像集成测试,但我不确定Rails是否将功能测试与集成测试区分开来。
也许答案是显而易见的,我没有看到它。
答案 0 :(得分:0)
程序测试可以是一种非常有效的方式来显示错误的存在,但绝对不足以显示他们的缺席(Edsger Wybe Dijkstra)
首先,我认为你应该假设CSV解析器正确地完成了它的工作。
完成此操作后,获取输出CSV文件并将其放入您的规范(fixtures
,require
,load
)中,然后测试输出是否为您看到的输出。
如果这个csv文件的每一行都是正确的(我假设它是一个很大的,因为我在你的链接中说了),那么我会得出结论你的代码是有效的。我不打算每年都去测试它,除非它让你对你的代码感到非常安全。
之后您可能会遇到异常,但不幸的是您的规格无法检测到。它可以简单地确保它对今年的数据有用。