Вы действительно хорошо поработали, храня всю логику своей задачи в файле библиотеки вне граблей. Я бы пошел немного дальше ...
require 'csv_importer/engine'
class WebImport
def initialize(url)
@url = url
end
def call
url = 'http://blablabla/people.csv'
csv_string = open(url).read.force_encoding('UTF-8')
string_to_users(csv_string)
end
def string_to_users(csv_string)
counter = 0
duplicate_counter = 0
....
end
end
Смотрите здесь, что мы убрали, как мы называем наш метод (нам все равно, вызовет ли наш метод Rake или Ruby) И, возможно, разделили, как мы получаем наши данные.
Далее я бы написал свой тест следующим образом:
test 'override_application' do
a = WebImport.new(url: 'http://blablabla/people.csv')
a.string_to_users("a,b,c,d,e") # <-- a string you saved from some manual run, or that contains maybe a sample record with their exact format
assert_equal Users.count, 42
end
Учитывая, что вы сейчас отделены:
- как вы называете свой код, потому что он находится вне Rake в отдельной библиотеке / модуле
- как ваш код получает данные (обычно данные предоставляются
call
... но вы можете вставить сами данные здесь)
Тогда вы должны быть готовы к тестированию!