Hi everyone, I'm having a very strange problem testing some rake tasks with
rspec. I think I'm doing something terribly wrong here, and that's why
rspec is having one of the weirdest behaviours I've ever seen...
Here is one of my rake tasks:
namespace :rivendell do
desc 'Outputs the current version of Rivendell'
task version: :environment do
puts Rivendell::VERSION
end
end
And here is my spec (paths are alright):
describe 'Rakefile' do
before :all do
Rake.application.rake_require '../tasks/rivendell'
Rake::Task.define_task :environment
end
describe 'rivendell::version' do
# This doesn't appear to work
let :run_rake_task do
Rake::Task["rivendell::version"].reenable
Rake.application.invoke_task "rivendell::version"
end
it 'should display the right version' do
Rivendell.should_receive('VERSION').and_return('0.1')
run_rake_task
end
end
end
With this version, all tests pass (I invoke it directly with the rspec
command).
The problem is, if I change the should_receive call to
should_receive('sdjkakja') it works as well, this suggests me I'm not
testing my code but some kind of weird double I've created (no idea how,
where or when).
Can someone please help me?
ngw