每次运行rspec时设置一次变量

时间:2014-07-28 02:18:07

标签: ruby rspec

我正在编写一个Ruby gem,可以访问基于Web的API的功能。我需要设置一个对象,该对象将在每次运行测试时初始化并登录API。 before(:all)仍然过多,因为它会为每个描述块运行一次,而我想要的是为所有测试文件普遍设置的内容。

更新

就像后续一样,为了让我在测试中使用的对象可用,我不得不像这样添加一个设置到rspec配置

config.add_setting :client
config.before(:suite) do
  RSpec.configuration.client = TDAmeritradeApi::Client.new
  RSpec.configuration.client.login
end

然后在describe块中我这样做:

let(:client) { RSpec.configuration.client }

2 个答案:

答案 0 :(得分:2)

我相信您正在寻找before(:suite),您可以在spec_helper.rb的配置部分使用它。

RSpec.configure do |config|
  config.before(:suite) do
    # API login
  end
end

答案 1 :(得分:1)

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

中声明

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