rspec resultado de la prueba del archivo de imitación csv.read

Estoy usando ruby 1.9 y estoy tratando de hacer BDD. Mi primera prueba 'debería leer en el csv' funciona, pero la segunda donde requiero que se burlen de un objeto de archivo no funciona.

Aquí está la especificación de mi modelo:

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

Aquí está el código hasta ahora:

class Person < ActiveRecord::Base
  attr_accessor :import_file

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

Básicamente quiero simular un archivo para que cuando el método CSV intente leer el archivo, devuelva mi variable de datos. Entonces puedo probar si es igual a mi variable de resultado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta