Skip to content

Permette di decidere se utilizzare assert o throw error in base a configurazione iniziale, e di poter disabilitare gli assert ad esempio in base all'ambiente per migliorare le performance in produzione.

License

Notifications You must be signed in to change notification settings

cityseventeen/errformance

Repository files navigation

Performance Error

Test Commit Number

Permette in modo agevole la disabilitazione degli assert inseriti a scopo di unit test, ad esempio in ambiente di produzione per migliorare le performance. Pensato anche per chi scrive package e moduli, si può configurare la restituzione di errori o assert senza modificare nulla nel codice; in questo modo, si possono inserire assert puri per le funzioni interne, o private, e tipi errformance nelle interfacce verso l'utilizzatore, così che possa decidere lui se mantenerli come assert disattivabili in produzione, o come errori puri non disattibili.

Esempio di utilizzo

//Modulo A
const e = require('errformance')('prod') //gli assert sono attivati se l'ambiente è diverso da prod, oppure si può inserire una callback più complesa per le regole di disattivazione

class interfaccia{
    metodo(arg){
        e.error(typeof arg === 'string', 'messaggio errore') // o anche, come da metodi assert es di chai, errformance.isString(arg, 'messaggio errore')
        return funzioneInterna(arg)
} 
}
function funzioneInterna(arg){
    e.assert(arg === 'valore1' || arg === 'valore2', 'messaggio errore')
    let new_value = maipolaArg(arg)
    return new value
}
module.exports = interfaccia;

//Modulo B
process.env.NODE_ENV = 'prod'
const moduloA = require('moduloA') // -> gli assert vengono disattivati

function funzioneCheUsaModuloA(args){
    /* corpo */}
}

module.exports = funzioneCheUsaModuloA;

Ed eventualmente, se a sua volta il modulo B verrà usato in altri progetti (Modulo C), l'utilizzatore potrà decidere se avere restituiti gli errori se sbaglia ad usare l'interfaccia, o dopo esito positivo unit test, trasformarli in assert disabilitabili

//ModuloC

process.env.NODE_ENV = 'dev' // -> gli assert di modulo A sono attivi
const moduloB = require('moduloB')
function unitTest(){/*...*/}
// utilizzo del modulo B in produzione
process.env.NODE_ENV = 'prod' // -> assert disattivati, ma rimangono ancora attivi gli e.error
process.env.ERRFORMANCE = 'assert' // -> gli e.error sono considerati come assert, e quindi essendo NODE_ENV = prod sono disattivati

About

Permette di decidere se utilizzare assert o throw error in base a configurazione iniziale, e di poter disabilitare gli assert ad esempio in base all'ambiente per migliorare le performance in produzione.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published