我正在尝试使用rspec测试一个非常简单的rake任务,但我发现它非常困难,无论我做什么改变,我的测试似乎都没有失败......
这是我要测试的任务:
desc 'Outputs the current version of Rivendell'
task version: :environment do
puts Rivendell::VERSION
end
如您所见,这是一项非常基本的任务。
这是我的测试:
describe 'Rakefile' do
before :each do
Rake.application.rake_require File.expand_path(
'../../Rakefile', File.dirname(__FILE__))
Rake::Task.define_task :environment
end
describe 'rivendell::version' do
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')
run_rake_task
end
end
由于某种原因,所有测试都通过,但是如果我将should_receive调用更改为
Rivendell.should_receive('DOESNTEXIST')
无论如何都会通过所有测试。
我在这里做错了什么?