2017-12-01 7 views
0

私は、Mochaスクリプトで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); 
     }); 
    } 
    }); 

答えて

0

を期待してXMLの子要素を比較していますとにかく

done(new Error("Your error message"));をキャッチに追加し、エラーが発生した場合はテストに失敗してください。

+0

elseブロックの後にdone()を削除し、** done(新しいError(pe.render(err.message)))を配置しました。 **キャッチブロックで**。今度はmochaがTotal passとfail countを正しく表示しています。 **しかし、私はタイムアウトエラー** – Aman

+0

を取得しています。キャッチでdone()を呼び出すと、成功の場合には約束が解決されず、タイムアウトになります。 –

関連する問題