Ho un paio di luci Philip Hue nel corridoio. Questi mostrano lo stato di costruzione sulle loro luci con una piccola applicazione Node.JS. Funziona come un fascino.
Attualmente sono in procinto di testare e refactoring di questa applicazione, ma nel mio app.js
ho alcune righe di codice in cui ho difficoltà a capire come testarle automaticamente.
if(config.enabledHueUpdateJobs) {
var Hue = require('./hue.js');
var Lights = require('./lights.js');
var hallwayLights = new Lights(new Hue());
hallwayLights.scheduleOn('45 7 * * 1-5');
hallwayLights.scheduleOff('30 17 * * 1-5');
hallwayLights.scheduleUpdate('*/30 * 7-18 * * 1-5', buildServer.getFailedBuildCount);
}
Ho una copertura del 100% per Hue.js
e Lights.js
'classi', ma il codice di implementazione effettivo non è coperto. Ho avuto un problema in cui ho modificato i metodi pubblici delle "classi", ma non il codice di implementazione, ma questo non è stato rilevato dai miei test.
Ho pensato di spostare questo codice in una "classe" con una funzione .start()
, ma comunque avrei ancora una o due righe non testate.
Per favore, suggerisci come posso ristrutturare il mio codice (o alcune best practice / pattern che dovrei ricercare / utilizzare) per rendere questo testabile migliore.
Aggiorna :
- Voglio che il nostro build-server distribuisca una versione funzionante dopo che tutti i miei test sono stati eseguiti. Quindi non devo controllare manualmente il sistema.
- Mi piacerebbe avere un flusso di lavoro TDD, vorrei rimanere nel mio IDE e avere fiducia nelle mie ultime modifiche.
- Preferibilmente non voglio avviare 'nodo app.js' e testarlo con qualche sistema di testing blackbox