Браузер перемещается, но URL не может быть сопоставлен в тесте e2e - PullRequest
0 голосов
/ 30 сентября 2019

Я начинаю изучать тест e2e с помощью Protractor в нашем приложении Angular. Сейчас я пытаюсь проверить маршрутизацию на одной из страниц. Все, что нужно сделать, - это раскрутить объект страницы и щелкнуть верхнюю строку наших тестовых данных с идентификатором 7. Этот триггер (click) -Event должен вызвать событие маршрутизации, которое приведет меня на нужную страницу.

forwarding.e2e-spec.ts

      let detailsPage: ForwardingDetailsPo;
      beforeAll(async () => {
        page = new ForwardingPagePo();
        await page.navigateTo();
        detailsPage = new ForwardingDetailsPo();
        table = await page.getForwardingTablePo();
        await table.getTable().getRow('7').click();
      });
      afterEach(async () => {
        await detailsPage.navigateTo('7');
      });
      it('should navigate to details', async (done) => {
        browser.getCurrentUrl().then(url => {
          expect(url).toContain('administration/forwardings/7');
          done();
          }
        );
      });

    }); 

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

Expected 'http://localhost:4200/administration/forwardings' to contain 'administration/forwardings/7'.

Я уже проверил, что в строке, которую я пытаюсь щелкнуть .isPresent().

Как вы можете заметить, я пытался засорять код сообщениями, которые ожидают, чтобы избежать запуска теста до завершения маршрутизации, но, похоже, он не работает идеально.

Намекает кто-нибудь?

______ РЕДАКТИРОВАТЬ _______

Решение не имело никакого отношения к самому клику, подробности см. В моем ответе.

Ответы [ 2 ]

0 голосов
/ 04 октября 2019

Я только нашел решения и подумал поделиться ими здесь. Моя проблема была основана на времени. У меня были другие тесты, которые основывались на функциях BeforeEach для правильной настройки. В одном из них я снова перешел на свою главную страницу. И поскольку beforeAll выполняется перед вызовами beforeEach, сама маршрутизация функционировала так, как хотелось бы, но я выполнял маршрутизацию практически мгновенно.

Сегодня я научился не использовать beforeAll в некоторых внутренних тестах, за исключением случаев, когда это необходимо.

0 голосов
/ 30 сентября 2019

Из того, что я вижу, вы переходите к 7 после проверки URL не раньше, потому что afterEach выполняется после каждого it блока

...