Угловая транспортирная петля над ней («некоторый тест») тестирует - PullRequest
0 голосов
/ 09 сентября 2018

Я ломал голову и искал в интернете способ сделать тестовый код транспортира e2e синхронным, но безрезультатно! Чего я хочу добиться, так это повторять один и тот же тест транспортира до бесконечности, пока я не закрою браузер, не закончу тесты или не завершу его с помощью ^ (control) c в командной строке. Вот пример того, что я пытаюсь сделать:

import { AppPage } from './app.po';
import { browser } from 'protractor';
import { interval } from 'rxjs';
import { takeWhile, switchMap } from 'rxjs/operators';
describe('workspace-project App', () => {
    let page: AppPage;
    let testComplete = false;

    beforeEach(() => {
       page = new AppPage();
    });

    while (true) { // Doesn't work 
        it('should display welcome message', () => {
            page.navigateTo();
            expect(page.getParagraphText()).toEqual('Welcome to testAngular6!');
            console.log('Executing tests');
            browser.wait(function () { return true; }, 5000);
        });
    }

});

но цикл while вокруг теста 'it' не работает и продолжает циклически повторяться. Я понимаю, что не могу использовать для этого ни одну из команд ожидания транспортира / веб-драйвера или даже API-интерфейсы с интервалом rjx, потому что это чисто проблема JavaScript. Поскольку JavaScript является однопоточным. Как я мог достичь этого, пожалуйста? В интернете есть много вопросов по этому поводу, но некоторые не имеют ответов, а другие в лучшем случае похожи, но не совсем одинаковы! Заранее большое спасибо за вашу помощь.

1 Ответ

0 голосов
/ 09 сентября 2018

Я нашел интересную статью

Что вам нужно сделать, это обернуть свой блок it внутри функции, которую затем можно вызвать из цикла

Пример:

describe('this is my looping test!', function() {
  var input = [1,2,3];
  var output = [10, 20, 30];

  function test_my_times_ten(input, output) {
    it('should multiply ' + input + ' by 10 to give ' + output, function() {
      expect(input * 10).toEqual(output)
    });
  }

  for(var x = 0; x < input.size; x++) {
    test_my_times_ten(input[x], output[x]);
  }
});

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...