如何在Rspec中模拟CSV foreach方法

时间:2013-07-29 20:35:19

标签: ruby-on-rails ruby rspec

我有一个使用CSV.foreach方法的方法。 数据看起来应该是这样的:

1,0,0,1

1,1,0,0

我想编写一个测试,如果我在每一行中元素的数量不一样,就会出现错误。

类似的东西:

it "should raise an error if input file lines size differ" do
  expect { my_method(invalid_file_name) }.to raise_error
end

如何模拟CSV的foreach方法以返回无效输入?

2 个答案:

答案 0 :(得分:9)

您确实可以存根CSV的foreach方法,但您需要使用and_yield方法并链接以生成多行,即:

CSV.stub(:foreach).and_yield(<first_line>).and_yield(<second_line)

答案 1 :(得分:-1)

你可以做到

CSV.stub(:foreach).and_retuen(<invalid_output>)

就像抄袭任何其他方法一样。