2015-01-08 27 views
5

Sto lavorando al test di e2e. Ho un pop di conferma che non esiste nella pagina finché non faccio clic su un pulsante. Una volta creato il popup di conferma, ottengo il testo da un elemento.in che modo Jasmine 'aspetta' aspetta una promessa del goniometro per risolvere

Successivamente, faccio clic sul pulsante OK che fa sì che il popup di conferma sia eliminato dal DOM e aggiungo anche un nuovo elemento al DOM con il valore che ho ricevuto prima.

il problema è, perché getText() restituisce una promessa, nel momento in cui faccio il confronto il primo elemento non è presente sullo schermo e il test fallisce.

se mi aspetto mentre il popup di conferma sullo schermo posso vedere il testo dell'elemento popup conferma.

come si aspetta Jasmine() risolvere la promessa?

grazie in anticipo

risposta

6

Qualcosa di simile?

element(by.id('dangerous-activity')).click().then(function() { 
    element(by.id('confirmation-text')).getText().then(function (textToConfirm) { 
    element(by.id('confirm-button')).click().then(function() { 
     element(by.id('new-element')).getText().then(function (newText)) { 
     expect(newText).toBe(textToConfirm); 
     }); 
    }); 
    }); 
}); 

Ecco tutte le promesse sono esplicitamente risolti, in modo da Jasmine non ha bisogno di risolvere i più alcuna promessa.

Puoi lasciare expect risolvere il new-element promessa, sostituendo le ultime due righe da:

.... 
     expect(element(by.id('new-element')).getText()).toBe(textToConfirm); 
    .... 

Ma non si può ottenere il textToConfirm nella stessa aspettativa, dal momento che è andato da allora, come da te indicato.

+0

ciao questo funziona. Ho usato qualche forma diversa di questa soluzione e ha risolto il problema. Grazie. –

3

questo dovrebbe essere il modo più semplice per fare quello che vuoi:

$('#open-popup').click(); 
var textToConfirm = $('#popup-text').getText(); 
$('#confirm-button').click(); 
var newText = $('#new-element').getText(); 
expect(newText).toBe(textToConfirm); 

Nota questo non funzionerà:

$('#open-popup').click(); 
var textToConfirmElement = $('#popup-text'); 
$('#confirm-button').click(); 
var newText = $('#new-element').getText(); 
expect(newText).toBe(textToConfirmElement.getText()); 

perché qui si ottiene il testo dopo il pop-up è già chiuso.

Problemi correlati