Ho un'app angular2 che voglio testare con il goniometro.Come implementare gli intervalli/il polling in angular2 per lavorare con il goniometro?
In questa applicazione ho una pagina con un grafico che viene aggiornato a intervalli regolari con dati generati automaticamente.
Apparentemente una caratteristica del goniometro è in attesa che gli script e le chiamate HTTP finiscano prima di eseguire il codice di test. Tuttavia, se c'è uno script in continuo polling che non finisce mai, il goniometro attenderà per sempre e scadrà dopo un certo tempo.
In angular1 questo potrebbe essere risolto implementando il polling con $interval
, che il goniometro non attende. Purtroppo in angular2 non c'è $interval
e il modo corretto per implementare polling sembra essere Observable.interval
, quindi questo è ciò che il mio codice è simile:
Observable.interval(500)
.map(x => this.getRandomData())
.subscribe(data => this.updateGraph(data));
Durante il test di una pagina in cui questo codice è in esecuzione, goniometro scadrà. Aspetta che la pagina finisca il caricamento e pensa che questo script uscirà a volte (quando in realtà gira per sempre).
Esiste un meccanismo di intervallo in angular2 che goniometro riconosce, in modo che non aspetta il polling per terminare prima di eseguire i test dell'interfaccia utente?
In caso contrario, come posso dire al goniometro di non attendere che questo intervallo termini prima di eseguire più codice di test?
EDIT: Per chiarire, il problema di timeout esisteva già nel goniometro con angular1, ma potrebbe essere risolto utilizzando $interval
, vedi:
- Timed out waiting for Protractor to synchronize with the page after 50001ms
- How to implement intervals in protractor/selenium
Questo non funziona in angular2 perché non c'è $interval
.
@ close-voter: quale parte non capisci? Sarò felice di spiegare ulteriormente il problema. – magnattic
Copia/pubblica l'articolo sul problema con il goniometro: https://github.com/angular/protractor/issues/3349. e hai trovato una soluzione migliore ora? – zixia