rspec命令附带了几个可用于自定义的选项 RSpec的行为,包括输出格式,过滤示例等。
例如:
$ rspec path/to/spec_file.rb
$ rspec --example 'first example'
$ rspec --tag type:special
$ rspec -P "**/*_test.rb"
如何使用rake spec
(使用完整Rspec
选项)执行相同的操作。
我的Rakefile
:
require 'bundler/gem_tasks'
require 'rspec/core/rake_task'
task default: :spec
RSpec::Core::RakeTask.new(:spec)
我一直在谷歌但没有找到任何完整的答案。感谢。
答案 0 :(得分:2)
命令行参数可以自动传递给ENV
哈希。
例如:
FOO=BAR rspec spec/*spec.rb
puts ENV["FOO"] # => "BAR"
在你的Rakefile中,你可以使用反引号来调用shell命令。
答案 1 :(得分:2)
您可以这样做,但需要进行一些更改。 首先,您需要取消定义已定义的规范任务(如果存在),然后再次定义它。 或者使用其他名称,例如spec_with_opts。虽然我经历了重命名。
在Rakefile中
Rake::Task["spec"].clear
RSpec::Core::RakeTask.new(:spec) do |task, args|
task.rspec_opts = ENV['RSPEC_OPTS'] if ENV['RSPEC_OPTS'].present?
task.pattern = ENV['RSPEC_PATTERN'] if ENV['RSPEC_PATTERN'].present?
task.exclude_pattern = ENV['RSPEC_EXCLUDE_PATTERN'] if ENV['RSPEC_EXCLUDE_PATTERN'].present?
end
task default: :spec
所以它现在可以这样运行:
rake spec RSPEC_PATTERN=path/to/spec_file.rb
rake spec RSPEC_OPTS="--example 'first example'"
rake spec RSPEC_OPTS="--tag type:special"
这个不会工作,你需要使用RSPEC_PATTERN
rake spec RSPEC_OPTS="-P '**/*_test.rb'"
您可以找到可在源文件中定义的其他选项: https://github.com/rspec/rspec-core/blob/master/lib/rspec/core/rake_task.rb