业务代码如下:
"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
三叔2016-11-15 17:20:49
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(); }) }