我必须将我前段时间为一个名为#mapper 的方法编写的一个简单的ruby 测试转换为一个RSpec 测试。
这种方法是非常数据驱动的,需要大量的输入和输出数据存储在 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
并将其返回的内容与当前进行比较,output
并使用test_name
.
真正的问题是我必须使用外部文件(根据规范 - 它们不在我的控制之下)
我是 RSpec 的新手,但对它有基本的了解,但我之前没有使用过夹具或工厂类型设置,并且确实需要一种方法以尽可能“RSpec 方式”将 CSV 和 YAML 文件集成到 RSpec 测试中。