В последнее время я замечал ошибку в моем выводе rspec, в частности в полном описании сбойных спецификаций - он всегда удваивал контекст, когда рано заканчивал вывод, но в последнее время он делал больше, чем удваивал, и в ситуациях, когдазапуск не был отменен досрочно.
Например:
- В области «учетные записи», когда тип пользователя «admin» В области «учетные записи», когдатип пользователя «admin» на странице «Данные пользователя» В области «учетные записи», когда тип пользователя «admin» В области «учетные записи», когда тип пользователя «admin» на странице «Информация о пользователе» ведет себякак страница с меню учетных записей В области «учетные записи», когда тип пользователя «admin» В области «учетные записи», когда тип пользователя «admin» на странице «Сведения о пользователе» В области «учетные записи», когдатип пользователя - «admin» В области «учетные записи», когда тип пользователя «admin», на странице «Данные пользователя» ведет себя как страница с меню учетных записей, там должна быть ссылка «Home»
Сбой / Ошибка: :: сообщение об ошибке здесь ::
Что может быть причиной и как я могу это остановить?
Дополнительные сведения: Похоже, это происходит чаще всего.с общими примерами групп.ОСОБЕННО общие группы примеров, которые используют другие общие группы примеров.
Вот грубый, урезанный пример кода, который я использую .:
shared_examples "a page with a standard page header" do
before(:each){ @header=find(:xpath,"//*[@id='page_header']") }
it_behaves_like "a header with a user control menu"
context "the standard menu" do
test "should exist"
end
end
shared_examples "a page with an administrative header" do
before(:each){ @header=find(:xpath,"//*[@id='page_header']") }
it_behaves_like "a header with a user control menu"
context "the admin menu" do
test "should exist"
end
end
shared_examples "a header with a user control menu" do
context "the user control menu" do
test "should exist"
end
end
users_type.each do |user|
describe "/index" do
before(:each){ @user=set_up_user(user);login_as(@user); visit(page)}
context "when the user is a #{user.type}" do
if(['general','mod'].includes?(@user.type))
test "some things should be true"
it_behaves_like "a page with a standard page header"
elsif('admin'==@user.type)
test "some other things should be true"
it_behaves_like "a page with an administrative header"
else
it_behaves_like "access denied"
end
end
end
end