2013-03-04 8 views
23

In tutti i framework di test che ho utilizzato, esiste un parametro facoltativo per specificare il proprio messaggio di errore personalizzato.Come passare un messaggio di errore personalizzato a un rilevatore di jasmine?

Questo può essere molto utile, e non riesco a trovare un modo per farlo fuori dalla scatola con gelsomino.

Ho avuto altri 3 sviluppatori che mi chiedono di questa esatta funzionalità e, quando si tratta di gelsomino, non so cosa dire loro.

È possibile specificare il proprio messaggio di errore personalizzato su ogni asserzione?

risposta

9

Se date un'occhiata al codice sorgente del gelsomino vedrete che non c'è modo di impostare il messaggio da un esterno. Ad esempio il matcher toBeNaN.

/** 
* Matcher that compares the actual to NaN. 
*/ 
jasmine.Matchers.prototype.toBeNaN = function() { 
    this.message = function() { 
     return [ "Expected " + jasmine.pp(this.actual) + " to be NaN." ]; 
    }; 

    return (this.actual !== this.actual); 
}; 

Come si può vedere i messaggi è difficile codificato nel matcher e sarà impostata quando si chiama il matcher. L'unico modo che posso pensare fuori per avere i propri messaggi è quello di scrivere il matcher come descritto here

+0

Se si desidera aggiungere più dettagli alla gelsomino messaggio hardcoded - tutti matchers hanno parametro opzionale per questo - controllare @ Xotabu4 risposta per più detials – Fabio

5

This issue tiene traccia di interesse per l'attuazione messaggi di errore personalizzate utilizzando un meccanismo .because().

Nel frattempo, avrelian ha creato una bella libreria che implementa messaggi di errore personalizzati utilizzando un meccanismo since() - jasmine-custom-message.

0

È possibile definire un coordinatore personalizzato nell'ambito globale, ignorando l'errore m essaggio in gelsomini, come di seguito:

beforeEach(function() { 
    jasmine.addMatchers({ 
     toReport: function() { 
      return { 
       compare: function (actual, expected, msg) { 
        var result = {pass: actual == expected}; 
        result.message = msg; 
        return result; 
       } 
      } 
     } 
    }); 
}); 
Problemi correlati