Rspec-config.fore(:suite)未在spec_helper中运行



我目前正在内存中设置一个哈希,该哈希可以在我的整个套件中使用我希望做以下

RSpec.configure do |config|
config.before(:suite) { $user_tokens = initialize_my_stuff }
end

然而,当我去运行我的套件时,我从我的一个规格中得到了一个错误:NoMethodError: undefined method 'each' for nil:NilClass

它正在尝试运行这个:

$user_tokens.each do |user,token|
describe 'foo bar' do
...
end
end

如果我注释掉这个规范,那么before(:suite)将按预期运行。

有没有办法确保before(:suite)块在尝试对规范执行任何操作之前运行

以下是发生的情况:

config.before(:suite) { $user_tokens = initialize_my_stuff }

它将在套件之前运行(这并不奇怪(,但是。。。

$user_tokens.each do |user,token|
describe 'foo bar' do
...
end
end

只是规范定义,发生在实际套件执行之前。

换句话说:

describe 'foo bar' do
...
end

只是保存以供以后执行的一堆块。您的$user_tokens尚未初始化。

我建议在你的规格中使用initialize_my_stuff,如下所示:

initialize_my_stuff.each do |user,token|
describe 'foo bar' do
...
end
end

或者,如果它非常昂贵,记住它:

def user_tokens
@user_tokens ||= initialize_my_stuff
end

并使用

user_tokens.each do |user,token|
describe 'foo bar' do
...
end
end

最新更新