Skip to main content

Matchers Personalizados en Chai

⏱ Dedicación recomendada: 0 minutos
Esto considera el contenido visible y relevante, e ignora texto colapsado o marcado como opcional.


En Chai, un popular framework de aserciones para JavaScript, es posible crear matchers personalizados de manera similar a Kotest. Chai permite extender su funcionalidad agregando métodos de aserción personalizados a su conjunto de matchers, proporcionando flexibilidad al escribir pruebas.

Crear un Matcher Personalizado en Chai

En Chai, los matchers personalizados se añaden a través de la función chai.Assertion.addMethod(), que permite definir nuevos métodos de aserción. Estos métodos pueden verificar condiciones específicas en los objetos de prueba, de manera similar a los matchers en Kotest.

Ejemplo de Matcher Personalizado

A continuación, se muestra cómo crear un matcher personalizado en Chai para verificar si un número es par:

chai.Assertion.addMethod('even', function() {
const actual = this._obj;
this.assert(
actual % 2 === 0,
'expected #{this} to be an even number',
'expected #{this} to not be an even number'
);
});
Explicación del Código
  • [1] chai.Assertion.addMethod('even', ...): Agrega el matcher personalizado even a Chai.
  • [2] this._obj: Hace referencia al valor actual que está siendo evaluado.
  • [3-7] this.assert: Realiza la comprobación. Si actual % 2 === 0, la prueba pasa. Si no, falla con el mensaje definido.

Comparación entre Kotest y Chai

CaracterísticaKotestChai
Definición de matchersUtiliza la interfaz Matcher<T> y MatcherResult.Usa chai.Assertion.addMethod() para agregar nuevos matchers.
Estructura del resultadoDevuelve MatcherResult con passed() y mensajes.Usa this.assert para evaluar la condición.
Matchers negadosImplementado automáticamente con shouldNot.Negación automática con .not.
FlexibilidadGran personalización y reutilización.Flexible, aunque con menos estructura que Kotest.

¿Qué Aprendimos?

Hemos comparado cómo crear matchers personalizados en Kotest y Chai. Ambos frameworks permiten definir validaciones específicas que se ajustan a las necesidades de las pruebas, aunque Kotest sigue una estructura más formal con Matcher<T> y MatcherResult, mientras que Chai se basa en la extensión del objeto Assertion para agregar métodos personalizados.

En ambas herramientas, los matchers personalizados permiten mejorar la legibilidad y reutilización de las pruebas, facilitando la creación de aserciones específicas.

Bibliografías Recomendadas