Node.js下异步调用失效

发布于 2022-09-04 03:24:35 字数 755 浏览 16 评论 0

业务代码如下:

"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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

提笔落墨 2022-09-11 03:24:35

谢邀。

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();
        })

    }
白芷 2022-09-11 03:24:35

没记错的话,mocha的测试用例最多是2000ms吧。测试异步例子的时候,加上个-t-timeout试试吧,一个学生很少写单元测试。。。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文