NodeUnit - 测试异步函数

NodeUnit - Testing an asynchronous function

我想用 nodeunit 测试异步函数返回的结果。我有以下测试:

module.exports = {
  createFail: function(assert) {
    var user = new CRUDUser({ firstName: 'Node' });

    assert.equal(undefined, user.id);

    user.create(function(res) { // user.create() makes an async AJAX call and should call this function back
      assert.equal(false, res.success);
      assert.equal(undefined, user.id); // user not created cause 'lastName' can't be null

      console.log('#####');
      assert.done();
    });
  }
};

但是当我 运行 它时,我得到以下错误:

FAILURES: Undone tests (or their setups/teardowns): 
- createFail

To fix this, make sure all tests call test.done()

如果我将 assert.done(); 调用移到回调函数之外,测试会在 AJAX 调用之前结束。

我也尝试在测试的最开始添加 assert.expect(3); 使其成为 "wait" 直到回调函数调用 assert.done(); 但我得到与上述相同的错误。

在所有情况下,预期的 ##### 显然没有输出到控制台。我做错了什么??

根据您的输出,我的第一个理论是 user.create 根本就没有调用回调函数。对其进行调试并确保在所有情况下(成功、失败、超时等),它实际上都调用了回调函数。换句话说,您的测试代码看起来可能没问题,但您正在测试的代码怀疑有错误。