0
모카 스크립트에서 try/catch와 관련된 문제가 있습니다. 테스트 중 일부는 실패하지만 모카는 "모두 통과했습니다"라고 표시됩니다. 아래는 내 테스트 스크립트 파일로이 문제를 해결하는 데 도움이됩니다. 이 코드에서는 배열의 입력 문자열을 URL에 게시하고 XML 응답을 기다리고 있습니다. 당신이 완료() 메소드가 아직 호출되는 오류를 잡아 약속을 확인할 때 정말 모든 테스트를 통과합니다, JSON 문자열을 XML 응답을 구문 분석 Xml2js 모듈을 사용하고모카 테스트 스크립트에서 try/catch 블록이 오류를 삼키고 있습니다
var expect = require('chai').expect;
var request = require('supertest');
var xml2js = require('xml2js');
var PrettyError = require('pretty-error');
var pe = new PrettyError();
var async = require('async');
var fs = require('fs');
var parser = new xml2js.Parser();
var build = require('./config').Build;
var build_url = build.Environment[build.Type].HostUrl;
var inputArray1 = [];
describe('Verifying Incoming post output response', function() {
var index = 0;
validateFields(index);
function validateFields(index) {
var input = inputArray1[index];
var actualInputArray = input.split(",");
describe(actualInputArray[0], function() {
it(actualInputArray[1], function(done) {
request(build_url).post('/lead')
.send(actualInputArray[2])
.end(function(err, res) {
var resxml = res.text;
console.log("resxml", resxml);
parser.parseString(resxml, function(err, result) {
try {
expect(result['Header']['RESULT']).to.deep.equal([actualInputArray[3]]);
expect(result['Header']['STATUS_CODE']).to.deep.equal([actualInputArray[4]]);
expect(result['Header']['MESSAGE']).to.deep.equal([actualInputArray[5]]);
} catch (err) {
console.log(pe.render(err.message));
}
index = index + 1;
if (index < inputArray1.length) {
validateFields(index);
}
done();
});
});
}).timeout(5000);
});
}
});
else 블록 다음에 done()을 제거하고 ** done (새 오류 (pe.render (err.message))); ** catch 블록에서. 이제 mocha가 총 합격 및 실패 횟수를 올바르게 표시하고 있습니다. **하지만 시간 초과 오류가 발생했습니다 ** – Aman
catch에서 done()을 호출하면 성공할 경우 약속이 해결되지 않고 시간 초과로 끝납니다. –