2014-11-26 3 views
0

나는 내가 위의 코드에 대한 단위 테스트 케이스를 작성하려면이일반 콜백 및 q 및 약속 콜백 모두에 대해 단위 테스트 케이스를 작성하는 방법은 무엇입니까?

exports.CallbackExample=function(req,res) 
{ 
    return callfunction().then(function(data) 
    { 
     saveData(data).save(function(err,responseData) 
    { 
      res.send(responseData); 

    }) 

    }); 

} 

처럼 콜백을 처리하는 코드를 작성했습니다하는 하나 개의 기능을 가지고있다. 그래서 나는 이렇게 썼다.

var res={}; 
var spy=res.send=sinon.spy(); 
CallbackExample(req,res).then(function() 
{ 

    expect(spy.calledOnce).to.equal('true'); 

}); 

그러나 이것은 효과가 없다. 이유는 함수가 첫 번째 콜백 (Q와 약속)과 두 가지 콜백 (callback)이 있고 두 번째 콜백 (callback)이 두 번째 콜백이라고 생각합니다.이 이유 때문에 이것이 작동하지 않을 수 있다고 생각합니다. 나는이 장애로 인해 앞으로 나아갈 수 없습니다. 그래서 그 함수의 단위 테스트 케이스를 어떻게 작성해야합니까? 그게 가능합니까? .. 당신 중 누구라도 나를 도울 수 있기를 바랍니다. 미리 감사드립니다. 당신 솔루션을 기다리고 있습니다.

답변

0

IMO, 약속이 제대로 연결되지 않았습니다. Deferred,

exports.CallbackExample=function(req,res) { 

    return callfunction().then(function(data){ 
    var deferred = Q.defer(); 
    saveData(data).save(function(err,responseData){ 
      if (err) { 
      deferred.reject(err); 
      } else { 
      res.send(responseData); 
      deferred.resolve(true); 
      } 
    }); 
    return deferred.promise; 
    }); 
} 
을 사용하여 해결하십시오.