検索

ホームページ  >  に質問  >  本文

mocha - Node.js下异步调用失效

业务代码如下:

"use strict";

var request = require('request')

var A = function () {
    this.a = function () {
        var op = {
            url: 'www.test.com'
            ...
        }
        request(op, function(err, res, data){
            console.log('request OK')
            console.log(data);
        })

    }
};

module.exports = A;

对应的单元测试代码如下:

var should = require('chai').should();
var A = require('../../lib/A');

var test = new A();

describe('A test', function () {
    it('test', function () {
        test.a();
    })
});

我期望它应该能够输出request OK和data,但是实际上mocha在进行单元测试的时候没有任何输出就直接通过了。
这里的异步调用为什么没有正常进行呢?


mocha参数为mocha --recursive

ringa_leeringa_lee2785日前689

全員に返信(2)返信します

  • 天蓬老师

    天蓬老师2017-04-17 15:25:53

    ご招待ありがとうございます。

    A.a();あなたの言いたいことによれば、それは test.a();

    であるはずです

    コンストラクターがインスタンス化される前は、コンストラクター自体のプロパティは関数オブジェクトのプライベート プロパティであり、外部からアクセスできないことを説明します。


    アップデート

    これは非同期テスト ケースです。タイムアウト設定を追加するか、コールバックを強制します。

    --recursive このパラメータは、現在のディレクトリでサブテストを再帰的に実行する場合にのみ使用されます

    リーリー

    または

    リーリー

    返事
    0
  • 阿神

    阿神2017-04-17 15:25:53

    私の記憶が正しければ、mocha のほとんどのテスト ケースは 2000ms です。非同期の例をテストするときは、-t-timeout を追加してみてください。学生が単体テストを作成することはほとんどありません。 。 。

    返事
    0
  • キャンセル返事