ho cercato proprio per questo oggi, e mettere un commento qui: https://github.com/adobe/brackets/issues/2752
La sintassi che è stato discusso è un'estensione di Jasmine per consentire una causa da aggiungere - così si sarebbe in grado a scrivere:
expect(fields[i].element.exists()).toEqual(true).because(field[i].name + 'is expected to exist');
che è ancora in fase di discussione, dopo alcuni anni, e non può giungere a buon fine. Un altro modo che ho trovato per farlo è quello di creare un matcher personalizzato. In generale, penso che scoraggerei un matcher personalizzato senza essere sicuro di coprire tutte le basi con esso, ma in questo caso stiamo davvero controllando un valore vero/falso, quindi il matcher non è troppo spaventoso.
Possiamo creare il matcher personalizzato con un beforeeach:
beforeEach(function() {
var matchers = {
toEqualBecause: function(value, message) {
this.message = function() {
return "Expected '" + this.actual + "' to equal '" + value + "' because " + message;
};
return this.actual == value;
}
};
this.addMatchers(matchers);
});
Possiamo quindi utilizzare questo matcher per mettere un messaggio con i nostri fallimenti in quanto tale:
expect(field[i].element.exists()).toEqualBecause(true, field[i].name);
che darà un'uscita di fallimento incluso il nome del campo come tale:
Expected 'false' to equal 'true' because account_name
NOTA: Vedo che le persone lo trovano ancora. informazioni in seguito dal team Jasmine è che v'è una funzionalità non documentata sul aspettarsi - è possibile includere un messaggio di errore personalizzato e funziona solo:
expect(fields[i].element.exists()).toEqual(true, field[i].name + ' is expected to exist');
Il che è esattamente quello che è stato originariamente cercando.
trovare fantastico! aspettarsi (qualcosa) .toBeFalsy ('should not ...'); funziona anche – ajd
non funziona –
Ciao! Sicuramente dovresti mettere la tua ultima scoperta sopra la tua risposta, quindi è direttamente accessibile (lascia il resto come log storici sotto). Grazie. – Bob