如何使用RSpec :: Core :: RakeTask创建RSpec Rake任务?

时间:2013-03-01 22:42:31

标签: ruby rspec rake

如何使用RSpec :: Core :: RakeTask初始化RSpec Rake任务?

require 'rspec/core/rake_task'

RSpec::Core::RakeTask.new do |t|
  # what do I put in here?
end

初始化函数记录在 http://rubydoc.info/github/rspec/rspec-core/RSpec/Core/RakeTask#initialize-instance_method没有很好的记录;它只是说:

 - (RakeTask) initialize(*args, &task_block)

A new instance of RakeTask

我应该为* args和& task_block添加什么?

我跟随已经开始使用RSpec与Rake结合为PHP项目构建一些ruby自动化的人的脚步。我习惯使用没有Rake的RSpec,所以我不熟悉语法。

谢谢, -Kevin

2 个答案:

答案 0 :(得分:6)

以下是我的Rakefile示例:

require 'rspec/core/rake_task'

task :default => [:spec]

desc "Run the specs."
RSpec::Core::RakeTask.new do |t|
  t.pattern = "spec.rb"
end

desc "Run the specs whenever a relevant file changes."
task :watch do
  system "watchr watch.rb"
end

这允许从Rake

运行spec.rb文件中定义的规范

答案 1 :(得分:2)

这是我的rakefile的样子

gem 'rspec', '~>3'
require 'rspec/core/rake_task'

task :default => :spec

desc "run tests for this app"
RSpec::Core::RakeTask.new do |task|
  test_dir = Rake.application.original_dir
  task.pattern = "#{test_dir}/*_spec.rb"
  task.rspec_opts = [ "-I#{test_dir}", "-I#{test_dir}/source", '-f documentation', '-r ./rspec_config']
  task.verbose = false
end

你可以从你的测试目录'rake',它将运行名为[something] _spec.rb的所有测试 - 它应该适用于不同的测试目录(例如不同的项目);如果你有一个单独的目录中的源代码(例如在上面的代码中,一个名为'/ source'的子目录将会提取它们。显然,你可以将源目录更改为你想要的。

这是我使用的rspec_config文件 - 您可以在此处添加自己的设置:

RSpec.configure do |c|
  c.fail_fast = true
  c.color = true
end