我有一个使用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方法以返回无效输入?
答案 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>)
就像抄袭任何其他方法一样。