문제

하나의 노드 모듈 에 문제가 있습니다 다른 상자 및 Travis-CI에서 로컬로 작업하고 있지만 때로는 시간 초과로 인한 것으로 인해 하나의 단일 테스트가 Travis-CI . 시험은 적어도 최소한 나에게 결정적이므로 무작위로 실패해서는 안됩니다.

이 부분에 문제를 추적했습니다 :

function record(rec_options) {

    //  Originaly the parameter was a dont_print boolean flag.
    //  To keep the existing code compatible we take that case into account.
    var typeof_rec_options = typeof(rec_options);
    var dont_print = (typeof_rec_options === 'boolean' && rec_options)
      || (typeof_rec_options === 'object' && rec_options.dont_print);
    var output_objects = typeof_rec_options === 'object' && rec_options.output_objects;

...

        var out = !output_objects ?
          generateRequestAndResponse(body, options, res, datas) :
          generateRequestAndResponseObject(body, options, res, datas);
.

rec_options{ dont_print: true, output_objects: true }의 값은 var output_objectsfalse로 평가됩니다 (다시 만 ). 함수가 문자열을 출력하고 테스트가 올바르게 객체가 아닌 객체가 아닌 객체가 아닙니다. 문자열을 덤프하는 빌드 에서 플래그 평가가 실패 할 수있는 증거를 볼 수 있습니다. 객체 대신 (RefectaCodicetag 코드가 지정 될 때마다 오브젝트가 객체임을 확인하고 output_objects가 예상되는 string를 보여주는 테스트가 있습니다.

나에 따르면 이것은 결코 일어나지 않아야하며, object는 모호하게 정의되지 않으며 확실히 무작위로 정의되지 않습니다. 그러나 이것은 정확히 시간 이후 일이 일어나는 일입니다.

무엇을 잘못하고 있습니까?

도움이 되었습니까?

해결책

문제는 그 비동기 호출을 마무리하기 전에 마무리 할 때까지 기다리지 않는 단위 테스트 중 하나에있었습니다.그런 다음 다른 테스트를 실행하여 타이밍에 따라 간섭합니다.이것은 http / https 요청과따라서 후속 테스트는 때로는 결함이있는 테스트에서 비동기 요청을 캡처 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top