Я использую ruby 1.9 и пытаюсь сделать BDD.Мой первый тест «должен читать в CSV» работает, но второй, где мне требуется, чтобы объект файла был смоделирован, не.
Вот моя спецификация модели:
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
это код до сих пор:
class Person < ActiveRecord::Base
attr_accessor :import_file
def import(filename)
CSV.read(filename, :row_sep => "\r", :col_sep => "\t")
end
end
Я в основном хочу смоделировать файл так, чтобы, когда метод CSV пытается прочитать из файла, он возвращал мою переменную данных.Затем я могу проверить, равна ли она моей переменной результата.