Как проверить видимость пролета? - PullRequest
0 голосов
/ 12 июня 2019

Я тестирую страницу входа в систему, в сценарии, когда я ввожу неверный логин и пароль, я ищу, чтобы собрать диапазон "Ошибка аутентификации"

Я выбираю диапазон webElement с помощью xpath '/html / body / div [2] / div / div / snack-bar-container / simple-snack-bar / span, когда я тестирую его на консоли навигатора, я получаю текст внутри span.Но когда я использую его в тестовом сценарии, он не работает.

getSnackbar() {
   return element(by.xpath('/html/body/div[2]/div/div/snack-bar- 
container/simple-snack-bar/span'));
  }

it(' SnackBar "Authentication Failed" Appears ', () => {
  login.navigateTo();
  element(by.id('username')).sendKeys('LogIn');
  element(by.id('password')).sendKeys('pwd');
  login.logIn();
  browser.sleep(5000);
  expect(login.getSnackbar().getText()).toEqual('Failed Authentication');
});

Я ожидаю получить положительный результат теста, но я получаю: «Не удалось загрузить ресурс: сервер ответилстатус 401 (не авторизован) ".

1 Ответ

0 голосов
/ 12 июня 2019

Мое первое замечание - не использовать xpaths в тестах, поскольку они очень хрупкие.Лучший способ получить элемент в угловом тестировании - использовать следующее

elementYouWant = fixture.debugElement.query(By.css('#id-of-element'));
ИЛИ
elementYouWant = fixture.debugElement.query(By.css('.class-of-element'));

Также неиспользуйте browser.sleep(), чтобы тестовый модуль длился не менее 5 секунд, что слишком медленно.Попытайтесь дождаться функции, если она асинхронная.

Что касается сообщения об ошибке Похоже, вы не издеваетесь над методом входа в систему.(т.е. вы делаете реальный звонок на ваш сервер).Вы не должны этого делать.Модульный тест должен макетировать все внешние зависимости.

Вы должны создать фиктивный класс login с методом mock logIn() и вернуть ошибочный ответ.Тогда вы сможете выполнить свое утверждение без проблем, с которыми вы столкнулись.

Надеюсь, это поможет

...