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

6
我该如何使用RSpec::Core::RakeTask来初始化一个RSpec Rake任务?
require 'rspec/core/rake_task'
RSpec::Core::RakeTask.new do |t| # 在这里放什么? end
http://rubydoc.info/github/rspec/rspec-core/RSpec/Core/RakeTask#initialize-instance_method中所列的Initialize函数文档不是很详细,它只写道:
- (RakeTask) initialize(*args, &task_block)
一个新的RakeTask实例
我应该为*args和&task_block放什么?
我正在跟随一个已经开始使用RSpec结合Rake为PHP项目构建一些Ruby自动化的人的脚步。我习惯于在没有Rake的情况下使用RSpec,因此对这个语法不熟悉。
谢谢, -Kevin
2个回答

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文件中定义的规范。

3
我使用了 t.pattern = "spec/**/*_spec.rb"。谢谢。 - Matt Connolly

4
这是我的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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接