mocha - Node.js下异步调用失效
ringa_lee
ringa_lee 2017-04-17 15:23:53
0
2
627

业务代码如下:

"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_lee
ringa_lee

ringa_lee

全部回覆(2)
Peter_Zhu

謝邀。

A.a();照你的意思應該是test.a();

解釋一下,建構子在實例化先前其自身的屬性是該函數物件的私有屬性,外部是無法存取的。


更新

這個是異步的測試案例,加個超時設定或強加個callback吧。

--recursive 這個參數只是遞歸執行目前目錄下子測驗用的

mocha -t 10000 test.js

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

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

    }
阿神

沒記錯的話,mocha的測試案例最多是2000ms吧。測試非同步範例的時候,加上個-t-timeout試試看吧,一個學生很少寫單元測驗。 。 。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!