Вы реорганизуете спецификацию по тем же причинам, по которым вы реорганизуете все остальное: оно сделает ваше приложение - будь то производственное приложение или тестовый костюм - работает быстрее.
Кроме того, рефакторинг фрагмента кода заставляет вас задуматься о том, что вы должны были написать такую вещь. Это увеличивает ваше понимание проблемы и сделает вас более способным решать другие проблемы в том же приложении.
И все же я бы сильно не согласился с вашим рефакторингом. Видите ли, когда вы смотрите спецификацию, вы хотите увидеть быстро и ясно, что вы тестируете. Если вы перемещаете утверждения в другое место, вы поражаете себя, потому что вам нужно пойти и найти, куда вы положили эту вещь.
Я предлагаю вам никогда не убирать утверждения из вашей спецификации. Даже если они повторяются. Все в порядке. Он отмечает намерение, поэтому вы никогда не забудете то, что хотите проверить.
Вместо этого сфокусируйте свой рефакторинг на коде котла.
Например, вы тестируете форму и для перехода на эту страницу вам нужно нажать на множество ссылок. Первым подходом было бы поставить все в спецификации. Много кликов.
В результате рефакторинга такого кода вся ссылка click_link будет помещена в before (: each). Используйте также контекст, чтобы уточнить.
Как это:
feature "Course" do
context "Loged in" do
before(:each) do
school = School.make!
switch_to_subdomain(school)
end
context "In the new course form" do
before(:each) do
click_link("Asignaturas")
click_link("Nueva asignatura")
end
scenario "New course" do
fill_in(:name, :with => "Matematicas")
click_button("Create Course")
page.has_content?("Asignatura creada").should == true
dbSchool = School.find(school.id)
dbSchool.courses.count.should == 1
end
scenario "New course" do
fill_in(:name, :with => "")
click_button("Create Course")
page.has_content?("Asignatura creada").should == false
dbSchool = School.find(school.id)
dbSchool.courses.count.should == 0
end
end
end
end
Понимаете? Код котла не соответствует спецификации. Но хватит о спецификации, чтобы через 7 месяцев вы могли понять, что вы тестируете. Никогда не убирай утверждения.
Итак, мой ответ: Refactor Spec - это не только хорошая идея, но и необходимость. Но не смешивайте рефакторинг с сокрытием кода.