如何在Rspec中模拟CSV foreach方法

dan*_*ron 4 ruby rspec ruby-on-rails

我有一个使用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
Run Code Online (Sandbox Code Playgroud)

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

Pet*_*vin 9

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

CSV.stub(:foreach).and_yield(<first_line>).and_yield(<second_line)
Run Code Online (Sandbox Code Playgroud)