type provocar errors error custom javascript unit-testing jasmine

javascript - provocar - ¿Cómo pasar un mensaje de error personalizado a un jasmine matcher?



throws error javascript (4)

Puede definir un emparejador personalizado en el ámbito global, anulando el mensaje de error en jasmine de la siguiente manera:

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

En todos los marcos de prueba que he usado, hay un parámetro opcional para especificar su propio mensaje de error personalizado.

Esto puede ser muy útil, y no puedo encontrar una manera de hacer esto de manera directa con jazmín.

He tenido otros 3 desarrolladores que me han preguntado acerca de esta funcionalidad exacta, y cuando se trata de jasmine no sé qué decirles.

¿Es posible especificar su propio mensaje de error personalizado en cada aserción?



Este problema es el seguimiento del interés en la implementación de mensajes de error personalizados mediante un mecanismo .because() .

Mientras tanto, avrelian ha creado una bonita biblioteca que implementa mensajes de error personalizados utilizando un mecanismo since() : jasmine-custom-message .


Si echas un vistazo al código fuente de jazmín, verás que no hay forma de configurar el mensaje desde fuera de un emparejador. Por ejemplo, el toBeNaN 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); };

Como puede ver, los mensajes están codificados en el emparejador y se configurarán cuando llame al emparejador. La única forma en que puedo pensar en tener tus propios mensajes es escribir tu matcher como se describe here