Can I override task :environment in test_helper.rb to test rake tasks?
        Posted  
        
            by Michael Barton
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Michael Barton
        
        
        
        Published on 2009-05-29T10:47:13Z
        Indexed on 
            2010/03/20
            0:11 UTC
        
        
        Read the original article
        Hit count: 756
        
I have a series of rake tasks in a Rakefile which I'd like to test as part of my specs etc. Each task is defined in the form:
task :do_somthing => :environment do
  # Do something with the database here
end
Where the :environment task sets up an ActiveRecord/DataMapper database connection and classes. I'm not using this as part of Rails but I have a series of tests which I like to run as part of BDD.
This snippet illustrates how I'm trying to test the rake tasks.
def setup
  @rake = Rake::Application.new
  Rake.application = @rake
  load File.dirname(__FILE__) + '/../../tasks/do_something.rake'
end
should "import data" do
  @rake["do_something"].invoke
  assert something_in_the_database
end
So my request for help - is it possible to over-ride the :environment task in my test_helper.rb file so I my rake testing interacts with the my test database, rather than production? I've tried redefining the task in the helper file, but this doesn't work.
Any help for a solution would be great, as I've been stuck on this for the past week.
© Stack Overflow or respective owner