rspec résultat de test à partir de csv.lire en se moquant de fichier

Je suis l'aide de ruby 1.9 et je suis en train de faire BDD. Mon premier test "devrait se lire dans le csv' fonctionne, mais à la seconde où j'ai besoin d'un fichier objet se moque de lui ne le fait pas.

Voici mon modèle de spec:

require 'spec_helper'

describe Person do
  describe "Importing data" do
    let(:person) { Person.new }

    let(:data) { "title\tsurname\tfirstname\t\rtitle2\tsurname2\tfirstname2\t\r"}
    let(:result) {[["title","surname","firstname"],["title2","surname2","firstname2"]] }

    it "should read in the csv" do
      CSV.should_receive(:read).
        with("filename", :row_sep => "\r", :col_sep => "\t")
      person.import("filename")
    end

    it "should have result" do
      filename = mock(File, :exists? => true, :read => data)
      person.import(filename).should eq(result)
    end
  end
end

Voici le code pour l'instant:

class Person < ActiveRecord::Base
  attr_accessor :import_file

  def import(filename)
    CSV.read(filename, :row_sep => "\r", :col_sep => "\t")
  end
end

J'ai simplement envie de se moquer d'un fichier de sorte que lorsque le CSV méthode tente de lire à partir du fichier il retourne ma variable de données. Ensuite, je peux tester si elle est égale à ma variable résultat.

Pouvez-vous poster le stacktrace de l'échec spec? Avez-vous inspect la maquette pour voir si c'est ce que vous pensez que c'est?

OriginalL'auteur map7 | 2011-03-07