Tôi đang cố gắng tìm ra cách tắt một thể hiện Express. Về cơ bản, tôi muốn nghịch đảo của cuộc gọi .listen(port)
- làm cách nào để nhận máy chủ Express để STOP nghe, giải phóng cổng và tắt máy một cách rõ ràng?Làm thế nào để tôi lập trình tắt một thể hiện của ExpressJS để kiểm tra?
Tôi biết điều này có vẻ như nó có thể là một truy vấn lạ, vì vậy đây là ngữ cảnh; có thể có một cách khác để tiếp cận điều này và tôi đang nghĩ về nó một cách sai lầm. Tôi đang cố gắng thiết lập một khuôn khổ thử nghiệm cho ứng dụng socket.io/nodejs của tôi. Đó là một ứng dụng một trang, vì vậy trong các kịch bản thử nghiệm của tôi (tôi đang sử dụng Mocha, nhưng điều đó không thực sự quan trọng) Tôi muốn có thể khởi động máy chủ, chạy thử nghiệm với nó, và sau đó tắt máy chủ. Tôi có thể giải quyết vấn đề này bằng cách giả sử rằng máy chủ được bật trước khi thử nghiệm bắt đầu hoặc bằng một trong các thử nghiệm khởi động máy chủ và có mọi thử nghiệm tiếp theo giả định nó lên, nhưng điều đó thực sự lộn xộn. Tôi rất thích có mỗi tập tin thử nghiệm bắt đầu một thể hiện máy chủ với các thiết lập thích hợp và sau đó đóng trường hợp đó xuống khi các bài kiểm tra kết thúc. Điều đó có nghĩa là không có phụ thuộc kỳ lạ nào để chạy thử nghiệm và mọi thứ đều sạch sẽ. Nó cũng có nghĩa là tôi có thể thực hiện kiểm tra khởi động/tắt máy.
Vì vậy, mọi lời khuyên về cách thực hiện việc này? Tôi đã nghĩ về việc kích hoạt các ngoại lệ bằng tay để đưa nó xuống, nhưng điều đó có vẻ lộn xộn. Tôi đã đào tạo thông qua tài liệu Express và nguồn, nhưng dường như không thể tìm thấy bất kỳ phương pháp nào sẽ tắt máy chủ. Cũng có thể có một cái gì đó trong socket.io cho điều này, nhưng kể từ khi máy chủ socket chỉ được gắn vào máy chủ Express, tôi nghĩ điều này cần phải xảy ra ở lớp thể hiện.
Trong trường hợp kiểm tra Mocha, nơi bạn yêu cầu ('ứng dụng') tôi mở rộng lên đối tượng ứng dụng: app.server = app.listen (3000); vì vậy sau này tôi có thể nói: var app = require ('./ app'); app.server.close(); –
khi kiểm tra máy chủ, hãy kiểm tra https://github.com/visionmedia/supertest nó sẽ cho phép bạn kiểm tra việc khởi chạy máy chủ thực –