2016-07-08 3 views
1

단위 테스트를 작성하는 동안 원격 시스템 호출에 대한 응답을 효과적으로 모의 처리 할 수 ​​있습니까?노드 JS - 단위 테스팅을 위해 비누 함수 호출을 스텁하는 방법

client.SomeFunction(input, function(err, result)) {...} 

을 포함하는 코드가 여기에 있습니다 : : 문제의 방법이 하나가

이 코드는 결국 함수가 필요한 이유 인 AWS 람다로 실행하는 것입니다
'use strict'; 
var soap    = require('soap'); 
var responseBuilder = require('./responseBuilder'); 
var errorHandler  = require('../src/errorHandler'); 

/** 
* Execute the soap client 
*/ 
exports.executeSoapClient = function (input, headers, wsdlOptions, wsdlPath) { 

    var soapClientPromise = new Promise(function(resolve, reject){ 

     var response = responseBuilder.buildResponse(); 

     //Call SOAP Client 
     soap.createClient(wsdlPath, wsdlOptions, function (err, client) { 
      if (err) { 
       console.error(err, err.stack); 
       reject(errorHandler.createError("Unexpected: Could not communication with remote system.", 500)); 
      } 

      client.addSoapHeader(headers, "", "tkn", "http://siebel.com/webservices"); 
      //This is the function I want to mock out. 
      client.SomeFunction(input, function (err, result) { 

       if (err) { 
        console.error(err); 
        reject(errorHandler.createError("Unexpected: Unexpected: Could not call remote function on remote system.", 500)); 
       } else { 
        if (result.Error_spcCode > 0) { 
         var errorMessage = result.Error_spcMessage + " (" + result.Error_spcCode + ")"; 
         var error = errorHandler.createError("Business rule violation in remote system: " + errorMessage, 401); 
         console.error(error); 
         reject(error); 
        } else { 
         var successMessage = { flexId: result.FLEXId , message: result.Message }; 
         resolve(response.success(successMessage)); 
        } 
       } 
      }); 
     }); 
    }); 
    return soapClientPromise; 
}; 

그 방식으로 명명 될 수 있습니다.

답변

관련 문제