ruby on rails - rspec stub CSV Foreach with headers: true



我花了一整天的时间来了解如何存根这个CSV Foreach的头:在RSPEC中为true,然后用ROW和INDEX的do块。我已经尝试了一些事情,似乎没有工作。

这是我的模型

class Test
  def self.import(file_path)
    CSV.foreach(file_path, headers: true) do |row, index|
     Here the rest of the code to create/insert record
    end
  end
end

然后在rspec上,我尝试了以下几种方法:

describe "Class" do
  context "successfully insert" do
    let(:data) { "name,lastnamenHero,SuperHero}" }
    before do
      # CSV foreach Stub here
      CSV.stub(:foreach).with("file_path", headers: true).and_return(data)
    end
    it "inserts new record" do
      expect do
       Test.import("file_path")
      end.to change(Test, :count).by(1)
    end
  end
end

它不起作用,它只会返回CSV的数据。Foreach (file_path, headers: true),但它不会去'do块'。

有什么帮助吗?

非常感谢

我想你应该用and_yield代替and_return

查看respect -mock的README: https://github.com/rspec/rspec-mocks.

相关内容

  • 没有找到相关文章

最新更新