Najpierw należy przenieść rzeczywistą konfigurację aplikacji do modułu i zaimportować ją do pliku, który faktycznie uruchamia aplikację. Teraz, gdy jest to oddzielne, możesz mieć aplikację w pełnym stanie, zanim zaczniesz słuchać.
Powinieneś przenieść rzeczywistą konfigurację swojej aplikacji do osobnego pliku, nazwijmy ją app.js, możemy wywołać nasłuchiwanie z uruchamianego pliku, nazwijmy go index.js.
Więc app.js wyglądałby następująco:
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);
i index.js wyglądałby następująco:
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);
});
ten oddziela ładowanie aplikacji z konieczności rzeczywiście go słuchać, co pozwala na załaduj tę aplikację do testów jednostkowych.
W twoich testach jednostkowych, zrobiłbyś coś w metodzie instalacji i metodzie wynoszenia, aby wywołać i obniżyć serwer.
w teście plik/app_tests.js:
describe('app', function(){
var app = require('../app');
beforeEach(function(){
app.listen(3000);
});
// tests here
afterEach(function(){
app.close();
})
});
Nicea pytanie.Sam się nad tym zastanawiałem, ale po tygodniu po prostu się poddałem. Zombie naprawdę denerwowało mnie do pracy. Dużo czytam o PhantomJS, ale sam tego nie wypróbowałem. – Pickels