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

【字号: 日期:2022-10-02浏览:13作者:雯心

问题描述

业务代码如下:

'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

问题解答

回答1:

谢邀。

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();}) }回答2:

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

相关文章: