Innanzitutto, è necessario spostare la configurazione effettiva dell'app in un modulo e importarla nel file che avvia effettivamente l'app. Ora che questo è separato, puoi avere l'app nel suo stato completo prima di ascoltarlo realmente.
Dovresti spostare la configurazione attuale della tua app in un file separato, chiamiamola app.js, puoi chiamare ascoltare dal file su cui hai eseguito il nodo, chiamiamola index.js.
Quindi, app.js sarà simile:
var express = require('express')
, routes = require('./routes');
var app = module.exports = express.createServer();
// Configuration
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
// Routes
app.get('/', routes.index);
e index.js sarà simile:
var app = require('./app');
app.listen(3000, function(){
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);
});
Questo separa il caricamento della vostra app dalla realtà averlo ascoltare, che consente di carica quell'app nei tuoi test unitari.
Nei test di unità, si farebbe qualcosa con un metodo di installazione e un metodo di smontaggio per richiamare e far cadere il server.
nel test di file/app_tests.js:
describe('app', function(){
var app = require('../app');
beforeEach(function(){
app.listen(3000);
});
// tests here
afterEach(function(){
app.close();
})
});
Nizza domanda.Io stesso l'ho esaminato per un po ', ma dopo una settimana mi sono arreso. Ho trovato zombi davvero fastidiosi con cui lavorare. Ho letto molto su PhantomJS ma non l'ho provato da solo. – Pickels