有没有一种很好的方法可以在Ruby中断言CSV文件的内容?
我了解如何使用CSV库以及如何读取CSV文件,但这会导致一长串断言,例如:
`assert_equal("0", @csv_array[0].field('impressions'))
assert_equal("7", @csv_array[0].field('clicks'))
assert_equal("330", @csv_array[0].field('currency.GBP.commissions'))
assert_equal("6", @csv_array[0].field('currency.GBP.conversions'))
assert_equal("3300", @csv_array[0].field('currency.GBP.ordervalue'))`
是否有某种文件比较器,所以我可以写:
assert_equal(expected.csv ,actual.csv )
或者其他什么东西?
答案 0 :(得分:2)
这个怎么样:
expected_csv = "impressions,clicks,currency.GBP.comiisions,currency.GBP.conversions,currency.GBP.ordervalue
0,7,330,6,3300"
actual_csv = File.open('actual.csv').read
assert_equal(expected_csv, actual_csv)
如果CSV文件的全部内容仅为2行,则应该有效。否则,您必须操纵actual_csv
才能获得要测试的部件。你可以这样做:
IO.readlines('actual.csv')[3]
那会让你获得第三条线。然后,您可以使用标题行连接或与不带标题的字符串进行比较。
答案 1 :(得分:0)
如果你必须测试非常的输出,你可能会发现approval testing一个有趣的方法。基本上,输出是在第一次运行测试时保存的。然后,您可以手动检查输出并在正确的情况下批准它。在后续运行中,输出不同时会出错。