53

Relish 上的 before 和 after 钩子文档仅显示before(:suite)before(:all).

我什么时候应该使用其中一种?

4

2 回答 2

92

当 abefore(:all)在块中定义时,RSpec.configure它在每个顶级示例组之前被调用,而before(:suite)代码块只被调用一次。

这是一个例子:

RSpec.configure do |config|
  config.before(:all) { puts 'Before :all' }
  config.after(:all) { puts 'After :all' }
  config.before(:suite) { puts 'Before :suite' }
  config.after(:suite) { puts 'After :suite' }
end

describe 'spec1' do
  example 'spec1' do
    puts 'spec1'
  end
end

describe 'spec2' do
  example 'spec2' do
    puts 'spec2'
  end
end

输出:

Before :suite
Before :all
spec1
After :all
Before :all
spec2
After :all
After :suite
于 2014-01-16T21:57:43.667 回答
0

您还可以使用 before(:suite) 在运行任何示例组之前运行代码块。这应该在 RSpec.configure 中声明

http://rubydoc.info/github/rspec/rspec-core/RSpec/Core/Hooks

于 2013-03-17T04:16:41.597 回答