什么时候确定rspec之前(:all)运行?

时间:2015-03-06 17:33:27

标签: ruby rspec

问题很简单,给定一个运行多个*_spec.rb文件的模式,before(:all)在所有文件之前或每个文件之前运行一次?我知道before(:each)在每个例子之前运行,但我不清楚另一个。

如果它对我的用例有帮助,我想在before(:all)中初始化一个selenium实例并登录到一个网站。我只想在运行开始时登录一次并在运行结束时销毁selenium实例,而不是为运行的每个*_spec.rb文件初始化/ destroy。

我打算通过简单地在puts块中放置before(:all)语句来测试它,但它不会打印到屏幕上,只是忽略puts一起调用。

2 个答案:

答案 0 :(得分:1)

before(:all)为其定义的示例组(即描述或上下文块)运行一次。为清楚起见,从rspec 3开始,它的别名为before(:context)

听起来像是在before(:suite)

之后

答案 1 :(得分:0)

before(:all)将在给定Describe块中的示例之前运行一次。

RSpec Core 2.0 documentation中描述了此行为。根据{{​​3}},before(:context)提供与before(:all)相同的功能。