2016-12-08 3 views
1

내 코드는 서버에서 아약스를 통해 데이터를 가져 와서 약속을 사용합니다.단위 테스트 자바 스크립트 약속

이 코드에 대한 단위 텍스트는 어떻게 작성합니까?

function getPromise(){ 
    var p = new Promise(function(resolve, reject) { 
    http.get({ 
     host: 'localhost', 
     port: 3000, 
     path: '/blist' 
    }, function(res) { 
     if(res.statusCode < 200 || res.statusCode>300) { 
     reject('statusCode=' + res.statusCode); 
     return; 
     } 
     var data=""; 
     res.on('data', function (chunk) { 
     data += chunk; 
     resolve(data); 
     return; 
     }); 
     res.on('error', function(error) { 
     console.log("Got error: " + e.message); 
     reject(error); 
     }); 
    }) 
    }); 
    return p; 
} 
+0

당신은 더 압축 된 예를 추가 할 수 있습니까? – MoeSattler

+0

지금까지 무엇을 시도해 봤습니까? – EhsanT

+0

난 getPromise() = { module.exports \t \t \t 전화 목록이 생성 FUNC : 함수 (REQ, 입술) { \t \t \t \t VAR의 p = getPromise을(); \t \t \t \t p.then (기능 (데이터) { \t \t \t \t res.send (데이터) \t \t \t}). 캐치 (함수 (ERR) { \t \t \t \t CONSOLE.LOG (ERR) \t \t \t}) \t \t \t \t \t }} – flower

답변

0

당신은 nock로 서버 응답을 조롱하고 mocha

describe('promise' function (done) { 
    getPromise.then(response => { 
    // assert response 
    done() 
    }) 
} 
+0

u가 무엇을 의미하는지 더 설명 할 수 있습니까? – flower

0

를 통해 약속의 가치를 주장 할 수 나는 당신이 거의 당신이 가짜 경우 예상 무엇을 할 수 있는지, 약속의 기능을 테스트 할 것 같아요 http 호출.

당신은 모의하고 테스트에서 성공과 오류 응답을 시뮬레이션 할 수 있도록 매개 변수로 취하는 http 개체와 콜백을 전달하는 것이 좋습니다.

은 시나리오를 테스트 할 수

getPromise(http, req, callback) { 
    var promise = new Promise((resolve, reject) -> { 
    http.get(req, callback); 
    callback.on('data', data -> { // Resolve or reject looking at the status code }) 
    }) 
    return promise; 
} 

그런 다음 콜백을 조롱 할 수

뿐만 아니라 HTTP # GET 등의 기능처럼 뭔가