При попытке написать тесты для сервера узла с использованием jasmine и jasmine-node мои тесты останавливаются, когда я запрашиваю у сервера .listen(3000)
.Есть ли способ заставить listen
запускать асинхронно, чтобы он не останавливал остальные тесты, все еще вызывая его из тестов?Может быть, я могу проверить ответы, даже не позвонив слушать?Какие-нибудь хорошие идеи / статьи для тестирования узлового сервера?Я видел фреймворк для экспресс-тестирования, но я хотел бы по возможности придерживаться jasmine.
Когда я вызываю «listen» на http или экспресс-сервере, он сидит и слушает.Когда в тесте вызывается .listen (), тест ожидает завершения этой команды, прежде чем перейти к следующей.Поскольку это просто прослушивание в том, что я предполагаю, что-то вроде цикла while (true), эта строка фактически никогда не заканчивается, чтобы тест перешел к следующему.
Простой сервер в coffeescript с использованием экспресс
class exports.Server
constructor: (@port) ->
express = require 'express'
@express = express.createServer()
io = require('socket.io').listen(@express)
@express.use express.bodyParser()
@status = "initialized"
start: ->
@express.listen @port
console.log "Server listening on port " + @port
@status = "running"
Простой тест Жасмин, также в кофе.Выполнено с жасминовым узлом.
Server = require("../src/server").Server
describe "server", ->
server = new Server(3000)
it "initializes", ->
expect(server.port).toEqual(3000)
it "starts", ->
server.start()
console.log "FOO" #never reached