Я пишу функциональный тест для пользовательского выпадающего элемента управления, который мы создали, который имеет функциональность «только для чтения». Первоначальный план тестирования, который мы придумали для этого, заключался в том, чтобы убедиться, что «список» не рисуется при нажатии на раскрывающийся список, что обычно происходит. Разметка для списка не существует в DOM до тех пор, пока он не будет отрисован.
Функциональный тест выглядит так:
'can respond to clicks while in read-only mode, but will not open the menu': function() {
return this.remote
.get(require.toUrl('/tests/dropdown/readonly'))
.setFindTimeout(10)
// Click the dropdown pseudo element
.findById('readonly-dropdown-shdo')
.click()
.end()
// attempt to find the dropdown list (should not exist because this is a "readonly" dropdown)
.findById('dropdown-list')
.then(function(element) {
expect(element).to.be.empty;
})
.end()
// Check the currently active element (should be the psuedo-element)
.getActiveElement()
.getAttribute('id')
.then(function(id) {
expect(id).to.equal('readonly-dropdown-shdo');
})
.end();
},
Тест завершается неудачей на .findById('dropdown-list')
, потому что Selenium генерирует исключение «NoSuchElement», что верно, потому что элемент не существует. Проблема в том, что средство запуска тестов Intern автоматически проваливает тесты, которые выдают эти ошибки, насколько я могу судить, даже если такое поведение ожидается.
Мой вопрос: есть ли предпочтительный способ ожидать, что элемент не должен существовать на странице в определенное время?