如何在Ruby中声明CSV文件

时间:2014-08-29 10:41:31

标签: ruby csv minitest testunit

有没有一种很好的方法可以在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 )

或者其他什么东西?

2 个答案:

答案 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一个有趣的方法。基本上,输出是在第一次运行测试时保存的。然后,您可以手动检查输出并在正确的情况下批准它。在后续运行中,输出不同时会出错。