在jasmine中测试node.js服务器而不调用listen

时间:2012-03-03 15:13:30

标签: node.js tdd jasmine

在尝试使用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

0 个答案:

没有答案