0

を使用して非同期関数によって返された結果をテストしたいと考えています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);また、コールバック関数が呼び出されるまで「待機」するようにテストの最初に追加しようとしましたassert.done();が、上記と同じエラーが発生します。

いずれの場合も、期待される#####ものは明らかにコンソールに出力されません。私は何を間違っていますか??

4

1 に答える 1

1

あなたの出力に基づいて、私の最初の理論は、user.create単にコールバック関数を呼び出していないということです。それにデバッグし、すべての場合 (成功、失敗、タイムアウトなど) で、実際にコールバック関数を呼び出すことを確認します。つまり、テスト コードはおそらく問題ないように見えますが、テストしているコードにはバグがある疑いがあります。

于 2015-02-23T21:02:01.977 に答える