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
Vous devez vous connecter pour publier un commentaire.
Vous pouvez stub
File.open
:StringIO
essentiellement enroule une corde et lui permet de se comporter comme un IO objet (Fichier, dans ce cas)OriginalL'auteur zetetic