Zuerst müssen Sie Ihre tatsächliche App in ein Modul verschieben und in die Datei importieren, die Ihre App startet. Nun, da dies separat ist, können Sie die App in ihrem vollständigen Zustand haben, bevor Sie tatsächlich zuhören.
Sie sollten die tatsächliche Einrichtung Ihrer App in eine separate Datei verschieben, nennen wir sie app.js, können Sie von der Datei, aus der Sie den Knoten ausführen, abhören, nennen wir sie index.js.
So würde app.js wie folgt aussehen:
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);
und index.js würde wie folgt aussehen:
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);
});
Das Laden von Ihrer App seperates es tatsächlich hören mit, so dass Sie Laden Sie diese App in Ihre Unit-Tests.
In Ihren Komponententests würden Sie etwas in einer Setup-Methode und Teardown-Methode tun, um den Server hoch und runter zu bringen.
in der Datei Test/app_tests.js:
describe('app', function(){
var app = require('../app');
beforeEach(function(){
app.listen(3000);
});
// tests here
afterEach(function(){
app.close();
})
});
Nizza Frage.Ich selbst habe mich eine Weile damit beschäftigt, aber nach einer Woche habe ich einfach aufgegeben. Ich fand Zombie wirklich nervig, mit zu arbeiten. Ich habe viel über PhantomJS gelesen, aber ich habe es nicht selbst versucht. – Pickels