Я использую Ruby on Rails 3.1.0 и гем rspec-rails 2
. Я хотел бы провести рефакторинг следующего кода (я намеренно пропустил некоторый код и дал осмысленные имена для выделения структуры):
describe "D1" do
# Helper method
def D1_Method_1
...
end
context "C1" do
# Helper methods
def D1_C1_Method_1
session.should be_nil # Note: I am using the RoR 'session' hash
D1_Method_1 # Note: I am calling the 'D1_Method_1' helper method
...
end
def D1_C1_Method_2
...
end
it "I1" do
D1_Method_1
...
end
it "I2" do
...
D1_C1_Method_1
D1_C1_Method_2
end
end
context "C2" do
# Helper methods
def D1_C2_Method_1
...
end
def D1_C2_Method_2
...
end
it "I1" do
D1_Method_1
...
end
it "I2" do
...
D1_C2_Method_1
D1_C2_Method_2
end
end
end
Что я могу сделать для рефакторинга вышеуказанного кода?
PS: Я пытался извлечь вспомогательные методы во внешний модуль (с именем Sample
), но, например, относящийся к методу D1_C1_Method_1
(который содержит RoR session
), я получаю следующую ошибку при запуске spec-файла:
Failure/Error: session.should be_nil
NameError:
undefined local variable or method `session' for Sample:Module