찾다

 >  Q&A  >  본문

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_lee2837일 전711

모든 응답(2)나는 대답할 것이다

  • 天蓬老师

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

    초대해주셔서 감사합니다.

    A.a();말씀하신 대로 test.a();

    여야 합니다.

    생성자가 인스턴스화되기 전에는 생성자의 속성이 함수 개체의 전용 속성이므로 외부에서 액세스할 수 없다고 설명합니다.


    업데이트

    이것은 비동기 테스트 사례로, 시간 초과 설정을 추가하거나 콜백을 적용합니다.

    --recursive 이 매개변수는 현재 디렉터리에서 하위 테스트를 반복적으로 실행하는 데에만 사용됩니다.

    으아악

    또는

    으아악

    회신하다
    0
  • 阿神

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

    제 기억이 맞다면 mocha에 대한 테스트 케이스는 2000ms이 가장 많습니다. 비동기 예제를 테스트할 때 -t-timeout을 추가해 보세요. 학생은 단위 테스트를 거의 작성하지 않습니다. . .

    회신하다
    0
  • 취소회신하다