У меня есть задача rake, которая генерирует нового пользователя. Значения электронной почты, пароля и пароля_подтверждения (подтверждение) должны вводиться через командную строку.Rspec Rake Task: как анализировать параметр?
Это мой рейк код задачи:
namespace :db do
namespace :setup do
desc "Create Admin User"
task :admin => :environment do
ui = HighLine.new
email = ui.ask("Email: ")
password = ui.ask("Enter password: ") { |q| q.echo = false }
confirm = ui.ask("Confirm password: ") { |q| q.echo = false }
user = User.new(email: email, password: password,
password_confirmation: confirm)
if user.save
puts "User account created."
else
puts
puts "Problem creating user account:"
puts user.errors.full_messages
end
end
end
end
Я могу назвать это, набрав «грабли БД: настройки: админ» из моей командной строки.
Теперь я хочу протестировать эту задачу с помощью rspec. До сих пор мне удалось создать следующую спецификацию файл:
require 'spec_helper'
require 'rake'
describe "rake task setup:admin" do
before do
load File.expand_path("../../../lib/tasks/setup.rake", __FILE__)
Rake::Task.define_task(:environment)
end
let :run_rake_task do
Rake.application["db:setup:admin"]
end
it "creates a new User" do
run_rake_task
end
end
При выполнении спецификации моей передней задачи будет запрашивать для ввода из моей командной строки. Поэтому мне нужно проанализировать значение для электронной почты, пароля и подтвердить, чтобы при выполнении моих спецификаций задача rake не запрашивала значение этих полей.
Как я могу достичь этого из файла спецификации?
Как бы вы получите эту ошибку? NameError: uninitialized constant HighlLine # ./spec/lib/tasks/data_rake_spec.rb:10:in 'block (2 levels) in ' –