0

我有一个使用 web_mock 的 raw_responses 数组,我想将它们用作to_return方法的参数并链接到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])

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

4

2 回答 2

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)
于 2012-12-29T14:47:40.803 回答
0

最后我这样做了

stub = stub_request(:get, "www.google.de")
rr.each { |rf| stub.tap { |s| s.to_return(File.new(rf)) } }
于 2012-12-29T14:48:00.480 回答