stub_request链从文件数组中返回to_return

时间:2012-12-29 14:38:02

标签: ruby rspec2 webmock

我有一系列raw_responses 使用web_mock我想使用作为 to_return 方法的args 并链接到 stub_request 方法:

#["file1.txt", "subfolder/file_n.txt", "awsome_name.txt"]
rr = Dir.glob(File.expand_path("../../markups/*.txt", __FILE__))
stub_request(:get, "www.google.de").to_return(rr[0]).to_return(rr[1]).to_return(rr[2])

如何使用枚举器或类似的东西重写最后一个字符串以使用 rr 的所有数组?

2 个答案:

答案 0 :(得分:0)

README中所述,您只需将多个响应作为参数传递给to_return方法。基本上你想要这样的东西:

stub_request(:get, "www.google.de").to_return(rr[0], rr[1], rr[2])

但列出这样的数组值有点笨重(并且不能使用可变数量的响应),所以你应该使用Ruby的splat运算符:

responses = Dir[File.expand_path("../../markups/*.txt", __FILE__)].map{|f| File.read(f)}
stub_request(:get, "www.google.de").to_return(*responses)

答案 1 :(得分:0)

最后,我这样做了

stub = stub_request(:get, "www.google.de")
rr.each { |rf| stub.tap { |s| s.to_return(File.new(rf)) } }