Я новичок в транспортире и обещаниях в целом. Я осмотрелся, и хотя есть много сообщений о возврате обещаний или результатах действий в очереди, ни одно из них не имеет для меня особого смысла, поэтому я ищу довольно легко описываемый ответ на то, что, я надеюсь, является простой вопрос!
Я пытаюсь написать несколько тестов транспортира для моего сайта angularjs.
Я использую в основном bootstrap и angular, никаких других сторонних библиотек, кроме случайных надстроек angular, таких как toaster и bootstrap modal.
У меня есть несколько «шагов по организации», прежде чем я перейду к части своего теста с утверждениями. Скажем так:
- а) Человек входит в систему
- б) Пользователь получает доступ к форме параметров (которая может отображаться или не отображаться на экране в зависимости от некоторых внешних факторов, но если ее нет, они могут открыть ее нажатием кнопки).
- c) Человек выполняет действие в форме опций.
- г) утверждать, что текстовое поле в форме теперь содержит правильное значение.
Я могу довольно легко пройти тест, когда форма уже находится на экране, но бит, который заставляет меня застрять, - это шаг b), где мне нужно сначала проверить, активна ли форма, и нажать кнопку, если это не нужно, прежде чем переходить к шаг c.
Я пытался вернуть обещание от isDisplayed вот так:
//
// Is the user settings form active at the mo?
//
function _isUserSettingsFormActive()
{
var result = element(by.id(logoutFormID)).isDisplayed;
return result;
}
Но если я вызываю .then в _isUserSettingsFormActive (), я получаю следующую ошибку:
[31mTypeError: undefined is not a function[0m
Однако, если я выведу результаты _isUserSettinsFormActive (), я вижу следующее, поэтому я знаю, что он что-то возвращает:
function () {
return self.elementArrayFinder_[fnName].
apply(self.elementArrayFinder_, arguments).toElementFinder_();
}
Все, что я хочу сделать, это проверить, существует ли элемент, и действовать в соответствии с ним, прежде чем выполнять свое утверждение.
Он должен быть в функции, так как этот код будет использоваться во многих местах моего тестового костюма. Это не само «ожидание», а скорее шаг, который может потребовать или не потребовать действия для настройки браузера для прохождения моего теста.