Согласно Книга RSpec , before(:all)
:
... запускается один раз и только один раз в своем
собственный экземпляр объекта, но его
переменные экземпляра копируются в каждый
случай, в котором примеры
запустить. Слово предостережения при использовании этого:
В общем, мы хотим, чтобы каждый
пример работает в полной изоляции от
друг друга. Как только мы начнем
разделять состояние между примерами,
неожиданные вещи начинают происходить.
Таким образом, в ваших примерах @blah
копируется перед каждым тестом, поэтому присвоенные ему значения не переносятся из одного примера в другой.
Похоже, вы хотите сделать что-то вроде этого (воздушный код):
it "gets a token" do
@token = OAuth.some_method_that_returns_a_token
end
it "uses that token to access some OAuth feature" do
result = OAuth.some_feature(@token)
result.should be_something_something
end
Это пахнет как проверка OAuth, а не вашего кода. Вы должны рассмотреть вопрос о заглушении метода some_feature
(больше воздушного кода):
it "responds in some way when I use a valid token" do
@token = mock('token')
OAuth.should_receive(:some_feature).with(@token).and_return("success")
result = my_code_which_uses_ouath(@token)
result.should == "success"
end