Uno dei miei test si aspetta che il testo di un messaggio di errore sia uno di più valori. Dal getText()
restituisce una promessa Non riesco a utilizzare il dosatore di gelsomino toContain()
. Quanto segue non avrebbe funzionato in quanto protractor
(jasminewd
under-the-hood) non risolverebbe una promessa nella seconda parte del matcher, toContain()
in questo caso:Expect item in array
expect(["Unknown Error", "Connection Error"]).toContain(page.errorMessage.getText());
Domanda: C'è un modo per controllare se un elemento è in una matrice con gelsomino + goniometro dove un elemento è una promessa?
In altre parole, sto cercando inversa di toContain()
in modo che il expect()
avrebbe implicitamente risolvere la promessa passata
Per aggirare il problema, posso risolvere esplicitamente la promessa con then()
:.
page.errorMessage.getText().then(function (text) {
expect(["Unknown Error", "Connection Error"]).toContain(text);
});
Non sono sicuro che questa sia l'opzione migliore. Sarei anche a posto con una soluzione basata su terze parti come jasmine-matchers
.
A titolo di esempio, questo tipo di affermazione esiste in Python:
self.assertIn(1, [1, 2, 3, 4])
Utilizzare 'chai-promised' –
@BenjaminGruenbaum se si potesse elaborare il suggerimento in una risposta con un esempio, sarebbe fantastico, poiché suona come una valida alternativa valida a un utente personalizzato. Grazie! – alecxe
In generale, non mi piace offrire le librerie come risposta alle domande, dal momento che questo rende le domande-raccomandazioni per la libreria. Detto questo, penso che in questo caso sia probabilmente l'alternativa migliore. –