Отключить группу тестов в rspec?
у меня есть тестовая спецификация, которая describes
класс и внутри него есть различные contexts
каждый с различными it
блоки.
есть ли способ отключить context
временно?
Я пробовал добавлять pending "temporarily disabled"
звонок на самом верху в пределах context
Я хочу отключить, и я действительно видел что-то о ожидании, когда я запустил спецификацию, но затем он просто продолжал запускать остальные тесты.
вот что у меня было:
describe Something
context "some tests" do
it "should blah" do
true
end
end
context "some other tests" do
pending "temporarily disabled"
it "should do something destructive" do
blah
end
end
end
но, как я сказал, что он просто продолжил выполнять тесты под ожидающим вызовом.
поиск привел меня к этому список рассылки нить, в котором создатель (?) из rspec говорит, что это возможно в rspec 2, который я запускаю. Я думаю, что это сработало, но у него не было желаемого эффекта отключения всех следующих тестов, о чем я думаю, когда вижу pending
звонок.
есть ли альтернатива или я делаю это неправильно?
7 ответов:
отключить дерево спецификаций с помощью RSpec 3 вы можете:
before { skip } # or xdescribe # or xcontext
вы можете добавить сообщение пропустить это будет отображаться в выводе:
before { skip("Awaiting a fix in the gem") }
С RSpec 2:
before { pending }
использовать фильтры исключения. С этой страницы: В вашем
spec_helper.rb
(илиrails_helper.rb
)RSpec.configure do |c| c.filter_run_excluding :broken => true end
в вашем тесте:
describe "group 1", :broken => true do it "group 1 example 1" do end it "group 1 example 2" do end end describe "group 2" do it "group 2 example 1" do end end
когда я запускаю " rspec ./spec / sample_spec.rb --формат doc"
тогда вывод должен содержать "группа 2 Пример 1"
и вывод не должен содержать "группа 1 Пример 1"
и вывод не должен содержать "группа 1 Пример 2"
посмотрим, что вы думаете об этом:
describe "something sweet", pending: "Refactor the wazjub for easier frobbing" do it "does something well" it "rejects invalid input" end
мне нравится видеть причины с моими ожидающими элементами, когда я отключаю что-то на "некоторое время". Они служат в качестве небольших комментариев / TODOs, которые регулярно представлены, а не похоронены в комментарии или исключенном примере/файле.
изменение
it
topending
илиxit
быстро и легко, но я предпочитаю хэш-конструкцию. Он дает вам каждую запущенную документацию, является drop-in (не изменяет описание / контекст / это, поэтому я должен решите, что использовать позже), и так же легко удаляется, если решение принято или блокиратор удален.это работает то же самое для групп и отдельных примеров.
еще один. https://gist.github.com/1300152
использовать xdescribe, xcontext, всего в нескольких минутах, чтобы отключить его.
обновление:
начиная с rspec 2.11, он включает xit по умолчанию. так что новый код будет
# put into spec_helper.rb module RSpec module Core module DSL def xdescribe(*args, &blk) describe *args do pending end end alias xcontext xdescribe end end end
использование
# a_spec.rb xdescribe "padding" do it "returns true" do 1.should == 1 end end
использовать ожидание вместо описания. Если ваш блок:
context "some other tests" do it "should do something destructive" do blah end end
Вы можете пропустить весь блок:
pending "some other tests" do it "should do something destructive" do blah end end
describe "GET /blah" do before(:each) { pending "Feature to be implemented..." } it { expect(page).to have_button("Submit") } it { expect(page).to have_content("Blah") } end
просто объяснить, что происходит с вашим кодом. Включая его там, где у вас есть, он просто оценивается (и, следовательно, запускается), когда файл загружается во время запуска. Однако вам нужно, чтобы он был запущен при запуске тестов. Вот почему ответы предложили поставить
pending
(RSpec 2) илиskip
(RSpec 3) вbefore
блок.