Как протестировать всплывающие сообщения в Protractor в Angular?

В приложении, которое я тестирую, в классе компонента есть строки, которые отображают всплывающее сообщение. Я пытаюсь написать тест транспортира, который проверяет, отображаются ли эти сообщения или нет, но мне трудно. Причина в том, что у меня нет упоминания о тостре в моем Html, поэтому я действительно не знаю, как его найти транспортиром. Вот код, в котором я использую toastr. Я хочу проверить, отображается ли сообщение об успехе, если пользователь регистрируется или обновляется.

     dialogRef.afterClosed().subscribe(result => {
        console.log(result);
        if (result.success === "success") {
            this.toastr.success(result.isToEdit == true ? "User is updated successfully " : "User is created successfully.");
            this.getUsers();
        }
    });

Я ломаю голову над этим. Любая помощь будет здорово. Благодарю вас!

Изменить: я считаю, что решил эту проблему. Я сделал следующий код для доступа к сообщению:

return element(by.css('.toast-message'))

person KidA2001    schedule 12.06.2018    source источник
comment
Какую toastr библиотеку вы используете?   -  person user184994    schedule 12.06.2018
comment
В файле модуля у меня есть: import {ToastModule} from 'ng2-toastr/ng2-toastr';   -  person KidA2001    schedule 12.06.2018


Ответы (2)


Он существует в HTML, но только тогда, когда он виден.

В конфигурации вы можете указать класс сообщения, установив messageClass

Затем вы можете найти его с помощью класса CSS:

https://www.npmjs.com/package/ng2-toastr#toastoptions-configurations

person user184994    schedule 12.06.2018

Кажется, вам нужно дождаться появления тостера. Добавьте browser.sleep(1000), чтобы дождаться его. Это самое простое и не очень правильное решение, но в качестве первого шага вы можете попробовать его. Лучшее решение — использовать await browser.wait(ExpectedConditions.visibilityOf(element), 1000, element.locator());, чтобы транспортир ждал появления элемента в течение не более 1000 миллисекунд, не блокируя весь тест для сна

person Katya Pavlenko    schedule 12.06.2018
comment
Спасибо за понимание. Моя основная проблема заключается в получении всплывающего сообщения. Я не уверен, как получить доступ к сообщению, если его нет нигде в моем html. Единственное упоминание об этом находится в коде, который у меня есть в вопросе. Есть идеи, как я могу восстановить его в своем классе объектов? Спасибо! - person KidA2001; 12.06.2018
comment
вы можете использовать селекторы по классу, например, или по xpath. Найдите какой-нибудь уникальный селектор и используйте его. Если какой-то конкретный класс или идентификатор можно передать в тост, вам лучше использовать его. - person Katya Pavlenko; 12.06.2018
comment
Спасибо, кажется, я понял. тост-сообщение, похоже, сработало! - person KidA2001; 13.06.2018
comment
@KidA2001, не могли бы вы поделиться, как вы решили эту проблему. я сталкиваюсь с тем же - person muthu; 26.08.2020