2013-06-23 4 views
2

Как я могу проверить, что элемент не существует? Я пробовал следующее, но получаю ошибку textarea#Question1Text does not exist вместо проходящих тестов.Как проверить, что элемент не существует с RSpec?

it "should not have question 1" do 
    find('textarea#Question1Text').should_not be 
end 

it { should_not find('textarea#Question1Text') } 

ответ

3

Вы можете использовать один из водосвинка matchers (специально have_css), чтобы проверить, существует ли элемент или нет.

it 'should not have question1' do 
    page.should_not have_css('textarea#Question1Text') 
end 
1

легко Peasy

expect{page.find_by_id("update-#{term1.id}").should}.not_to raise_error 
expect{page.find_by_id("update-#{term4.id}")}.to raise_error 

, если у вас нет уникальных идентификаторов, то Css, как spullen предложить будет работать

2

Проблемы с предложенными способами сделать это состоит в том, что они будут иметь гонки если, например, после нажатия кнопки он скрывает поле. В этом случае он будет захватывать страницу после нажатия кнопки, но до того, как у javascript есть возможность ее найти, ваш тест может потерпеть неудачу. Он имеет тенденцию быть прерывистым и, в первую очередь, случается с быстрыми браузерами без головы, такими как phantomjs.

Вместо этого я предлагаю вам использовать что-то вроде:

expect(page).to have_selector("#id_of_element") 

Это будет ждать, пока условие истинно, но по-прежнему будет таймаут быстро, если это не удается.