在尝试使用jasmine和jasmine-node为节点服务器编写测试时,当我要求服务器.listen(3000)
时,我的测试停止了。有没有办法让listen
运行异步,这样它仍然可以在测试中调用它时停止其余的测试?也许我可以测试响应甚至没有调用listen?有关节点服务器测试的好主意/文章吗?我确实看到了expresso测试框架,但如果可能的话,我想坚持使用jasmine。
当我在http或快速服务器上呼叫“listen”时,它就坐在那里听。在测试中调用.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"
简单的茉莉花测试,也适用于咖啡。使用Jasmine-Node执行。
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