使用rspec测试rake任务似乎不起作用

时间:2014-02-12 14:29:21

标签: ruby rspec rake rakefile

我正在尝试使用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')

无论如何都会通过所有测试。

我在这里做错了什么?

0 个答案:

没有答案