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.