一个mocha的问题
发布于 6 年前 作者 sanvibyfish 2969 次浏览 最后一次编辑是 3 年前

UserHelper = getTestUser: (callback) -> User.findByUUID “4CD5E71C-EBD3-4E15-8AE3-84570EA340EC”, (err, user) -> User.findByUUID “4c003162-00fa-426f-9542-fe2c26b31f1b”, (err, staff) -> callback user, staff

describe “App”, -> client = null user = null staff = null beforeEach -> server.start client = io.connect socketURL, options UserHelper.getTestUser (userCB,staffCB)-> user = userCB staff = staffCB

afterEach -> server.stop

describe “#hello”, -> it “no callback”, (done) -> client.once “connect”, -> client.emit “hello”, appkey: "083a7ccf484b2e49a8e46d80" uuid: user.uuid

为什么user是null呢?

4 回复

getTestUser(callback)只有一个参数(回调函数),为什么如此调用:getTestUser (userCB,staffCB)

那怎么修改

UserHelper.getTestUser是一个异步函数,所以beforeEach的回调函数也要使用异步的形式:

  beforeEach (done) ->
    server.start
    client = io.connect socketURL, options
    UserHelper.getTestUser (userCB,staffCB)->
      user = userCB
      staff = staffCB
      done()

另外node.js约定callback形式的异步函数,传给回调函数的第一个参数是error对象,所以你第四行callback user, staff这样的代码是不符合约定的,当和async之类的类库一起用的时候很容易出问题。

但我加了done后,就2000MS的错误了

回到顶部