Прежде всего, шляпы от команды и сообщества Protractor для создания такой библиотеки для решения сложных задач, таких как тестирование E2E.Может ли адаптация адаптера жасмина должным образом ждать protractor.promise.defer(). Обещание?
У меня есть оболочка класса JS вокруг элемента ElementFinder, так как я хотел добавить дополнительные утилиты для дальнейшего изучения ElementFinder. Когда я возвращал экземпляр таких объектов класса я возвращаю его:
function myFunc(){
var myElement = element(by.binding('plan.name'));
var deferred = protractor.promise.defer();
var myWrapper = new myElementWrapper(myElement);
deferred.fulfill(myWrapper);
return deferred.promise;
}
Позже я ожидаю, что значение в Jasmine 2.1 с помощью:
var val=myFunc();
expect(val).not.toBeNull();
Согласно the official documentation по транспортир ферзя, @juliemr, тем expect
должен ждать, пока обещание не будет разрешено. Кажется, он безмолвно горит. Глядя на экземпляр обещания, который создал мой код, я вижу, что он имеет тип: goog.scope.promise.Promise
. В коде Protractor я заметил, что он использует: webdriver.promise.isPromise(res)
. Я также попробовал завернуть вызов с flow.execute
без успеха и хотел бы избежать использования серии цепочечных звонков .then
, поскольку он делает тест менее удобочитаемым.
Будет ли это должным образом ждать, чтобы решить мое обещание выше, прежде чем перейти к тестовому потоку?
Если нет, то, что является надлежащим способом для создания объекта обещания, который должен быть надлежащим образом проверен ароматом контрафактора expect
?
Я бегу используя новый и блестящий выпуск Protractor 2.0.
Извините, скопируйте ошибку патча. Исправьте код выше. Нет двух обещаний. Проблема все еще сохраняется. –
Я удалил эту часть своего ответа. Остальное по-прежнему применяется, я думаю. –