Trước tiên, bạn cần di chuyển thiết lập ứng dụng thực tế của mình thành một mô-đun và nhập ứng dụng đó vào tệp thực sự khởi động ứng dụng của bạn. Bây giờ điều này là riêng biệt, bạn có thể có ứng dụng ở trạng thái hoàn chỉnh của nó trước khi thực sự lắng nghe.
Bạn nên di chuyển thiết lập thực tế của ứng dụng vào một tệp riêng biệt, hãy gọi nó là app.js, có thể gọi lắng nghe từ tệp mà bạn chạy khỏi nút, hãy gọi nó là index.js.
Vì vậy, app.js sẽ trông như thế:
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);
và index.js sẽ trông như thế:
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);
});
này seperates tải của ứng dụng của bạn từ thực sự có nó nghe, cho phép bạn tải ứng dụng đó vào các bài kiểm tra đơn vị của bạn.
Trong các bài kiểm tra đơn vị của bạn, bạn sẽ làm điều gì đó trong một phương pháp thiết lập và phương pháp teardown để đưa lên và đưa xuống máy chủ.
Trong thử nghiệm tập tin/app_tests.js:
describe('app', function(){
var app = require('../app');
beforeEach(function(){
app.listen(3000);
});
// tests here
afterEach(function(){
app.close();
})
});
đẹp câu hỏi.Bản thân tôi nhìn vào đó một lúc nhưng sau một tuần tôi bỏ cuộc. Tôi tìm thấy zombie thực sự gây phiền nhiễu để làm việc với. Tôi đã đọc rất nhiều về PhantomJS nhưng tôi không thử nó. – Pickels