promise에 대한 테스트 용례 작성

1809 단어 node.js

앞말

Promise의 상태 전환은 이해하기 어려운 개념이 아니다.하지만 테스트 용례를 쓸 때 구덩이에 빠질 수도 있다.개인 기록입니다.

코드 해석

var should = require('should');

describe('promise assert', function () {
    it('normal assert', function (done) {
        var first = Promise.resolve('A');
        first.then(function(value) {
            value.should.equal('A');
            done():
        })
    });

    it('timeout assert', function (done) {
        var first = Promise.resolve('A');
        first.then(function(value) {
            value.should.equal('AB');
            done();
        })
    });
});

상술한 것은 처음에 쓴 테스트 용례로 당연히 첫 번째pass, 두 번째fail로 여겨진다.결과는 첫 번째pass, 두 번째timeout error였다.일시적인 단락으로 인해 문제의 소재를 발견하지 못하고 리포에 문의한 후 결과를 알게 되었다.
모든 단언은 실패 후throw error, 계속 아래로 실행하지 않고 then 방법은 하나rejected promise로 되돌아오기 때문에 done 방법은 호출되지 않기 때문에 timeout error가 나타난다.
문의한 후, mocha 최신 버전은 promise 기반의 단언을 지원하고, done 리셋 함수에 의존하지 않습니다.코드 수정은 다음과 같습니다.
var should = require('should');

describe('promise assert', function () {
    it('normal assert', function () {
        var first = Promise.resolve('A');
        return first.then(function(value) {
            value.should.equal('A');
        })
    });

    it('timeout assert', function () {
        var first = Promise.resolve('A');
        return first.then(function(value) {
            value.should.equal('AB');
        })
    });
});

이때 단언 결과는 예상대로 나왔다.

연락처


QQ:491229492https://github.com/bornkiller

좋은 웹페이지 즐겨찾기