RSpec - 针对实际文件进行测试,而不是模拟数据

时间:2012-04-13 14:46:27

标签: ruby testing rspec test-data

我对RSpec很新,所以这是一个非常基本的问题。我正在编写一些从文件中解析大量数据的东西,进行一些处理并返回一个汇总结果,这对Ruby来说非常可爱。

我想对这段代码进行一些RSpec测试,但我不想在测试中模拟数据。这些文件庞大而复杂,因为我希望代码能够处理这些文件,所以我希望在测试中直接使用这些文件。

我做了很多谷歌搜索,我一直无法找到这种情况的最佳实践示例 - 我发现的一切似乎都建议使用模拟数据。

因此,为了清楚起见,我想知道针对实际测试数据文件运行RSpec测试的最佳实践,而不是针对测试代码中模拟的内容。我很高兴打开文件,阅读它们等等,这不是问题所在。我真正感兴趣的是如何最好地构建我的测试和测试数据目录。

1 个答案:

答案 0 :(得分:4)

我过去所做的是在specs文件夹中创建一个数据文件夹来保存我想要读取的文件。

我理解你想要使用实际文件的动机,因为在实际文件中通常有各种各样的小边缘情况,你自己可能没有想到。我的建议是进行一个测试,打开文件并测试你想要的信息。但是,如果该测试失败,请创建一个新测试来解决您找到的文件中的特定问题。

例如,假设在尝试打开文件时发现它无法正确处理非UTF8数据。使用相关行创建一个新测试作为使用的数据(而不是简单地将其作为较大测试的一部分)。这样,如果它再次失败,你将能够精确确定痛点的位置。