将使用CSV和YAML数据文件的方法的普通红宝石测试转换为RSpec测试

时间:2012-05-30 20:08:32

标签: csv rspec yaml

我必须将我前一段时间写的一个简单的红宝石测试转换为RSpec测试的#mapper方法。

此方法非常数据驱动,需要将大量输入和输出数据存储在CSV和YAML外部数据文件的组合中。

目前这是一个独立于ruby的环境,但很快就会集成到rails项目中。

这是一些伪代码:

# current test algorithm
inputs = data_load :inputs
meta_maps = data_load :meta_maps
meta_maps.each do |meta_map_name, meta_map|
  outputs = data_load "outputs_#{meta_map_name}"        
  outputs.each do | output |
    next if output_data_not_available(output)
    test_name = output[:test_name]
    input = inputs[test_name]

    test test_name, output, mapper(input, meta_map)

  end
end

data_load函数加载CSV或YAML文件并将其作为类似哈希的文件返回。

test函数使用当前input调用mapper函数,并将其返回的内容与当前output进行比较,并使用test_name记录结果。

真正的问题是我必须使用外部文件(按照规范 - 并且它们不受我的控制)

我是RSpec的新手,但对它有基本的了解,但我之前没有使用过灯具或工厂类型设置,而且确实需要一种方法将CSV和YAML文件以最“RSpec方式”集成到RSpec测试中

1 个答案:

答案 0 :(得分:0)

您可以“阅读精细手册”了解RSpec中设置数据的所有方法:

由于RSpec位于Ruby之上,因此您可以访问Ruby的所有功能,以设置测试所需的任何数据。