Как правило, рейк-задачи должны быть очень минимальными. Отнесите фактическое поведение к реальным классам. Эти классы могут быть легко протестированы.
Пример:
task :scrape do
Scraper.scrape!
end
class Scraper
def self.scrape!
# do something
end
end
describe Scraper do
# your tests
end
Вы могли бы, как указал @brad, использовать тор, который сам по себе имеет регулярную структуру классов, поэтому в теории должно быть проще тестировать сами задачи. Я этого еще не сделал.
Вы можете определить методы в граблях, но я не знаю, где они заканчиваются. Ты не должен этого делать, так что не беспокойся. Сохраняйте тела задач минимальными, пишите нормальный код для грязной работы.