Estoy tratando de escribir casos de prueba de unidad para manejar los códigos de error que se definen a continuación. no estoy seguro de cómo lograrlo.
module.exports = { Error: Err, BadRequest: function () { return new Err(400, 'Bad Request'); }, NotAcceptable: function () { return new Err(406, 'Not Acceptable'); }, NotAuthorized: function () { return new Err(401, 'Not Authorized'); } }; function Err(code, message) { assert(code, 'code'); Error.call(this); Error.captureStackTrace(this, this.constructor); Object.defineProperty(this, 'code', { enumerable: true, value: code }); this.reason = message; }Debería tener una mejor capa de error base al extender la clase Error que ya proporciona la mayoría de las funciones que necesitaría (capturando el seguimiento de la pila automáticamente):
class Err extends Error { constructor(code, message) { super(message); this.code = code; this.reason = message; } } Luego puede realizar su afirmación usando la expectativa de throw :
const errorFn = () => { throw new Err(401, 'Unauthorized') }; expect(errorFn).to.throw(Err).to.haveOwnProperty('code', 401).to.haveOwnProperty('reason', 'Unauthorized');Obviamente, debe actualizar su sub-error en consecuencia para extender su error genérico.