我有我的测试rake任务的问题。这项任务看起来是这样的:
namespace :db do
desc 'Load the seed data from db/seeds.rb'
task :seed => :environment do
puts 'seed'
end
end
而我的测试是这样的:
require 'rake'
require 'spec_helper'
RSpec.describe Rake::Task do
describe "db:seed" do
it "runs a task" do
Rake::Task['db:seed'].invoke
end
end
end
一切看起来不错,但我仍然收到这个错误:
Failure/Error: Rake::Task['db:seed'].invoke RuntimeError: Don't know how to build task 'db:seed' (See the list of available tasks with `rake --tasks`)
什么是最奇怪的,通过控制台打电话时相同的任务,工作原理:
> rake db:seed
seed
一些想法?
好吧,我发现了一个旁路:
RSpec.describe Rake::Task do
describe "db:seed" do
it "runs a task" do
system('rake db:seed')
end
end
end
为了能够通过调用任务
Rake::Task['...'].invoke
你应该首先通过加载任务
Rails.application.load_tasks