将rspec 2测试组织到rails中的"单元"和"集成"类别中

Evg*_*nii 11 testing rspec2 ruby-on-rails-3

如何将rspec 2测试组织成"单元"(快速)和"集成"(慢)类别?

  • 我希望能够只使用rspec命令运行所有单元测试,而不是"集成"测试.
  • 我希望能够只运行"集成"测试.

Ken*_*Dev 19

我们有相同性质的团体.然后我们在本地开发盒和CI上逐个运行.

你可以干脆做

bundle exec rake spec:unit
bundle exec rake spec:integration
bundle exec rake spec:api
Run Code Online (Sandbox Code Playgroud)

这就是我们的spec.rake的样子

  namespace :spec do
    RSpec::Core::RakeTask.new(:unit) do |t|
      t.pattern = Dir['spec/*/**/*_spec.rb'].reject{ |f| f['/api/v1'] || f['/integration'] }
    end

    RSpec::Core::RakeTask.new(:api) do |t|
      t.pattern = "spec/*/{api/v1}*/**/*_spec.rb"
    end

    RSpec::Core::RakeTask.new(:integration) do |t|
      t.pattern = "spec/integration/**/*_spec.rb"
    end
  end
Run Code Online (Sandbox Code Playgroud)


Zso*_*olt 9

一种方法是标记您的RSpec测试用例,如下所示:

it "should do some integration test", :integration => true do
  # something
end
Run Code Online (Sandbox Code Playgroud)

执行测试用例时,请使用以下命令:

rspec . --tag integration
Run Code Online (Sandbox Code Playgroud)

这将使用标记执行所有测试用例:integration => true.有关更多信息,请参阅此页面.