2016-08-03 4 views
-1

저는 모카 테스트 중간에 Facebook API 응답을 기다리고 있습니다. 나는 왜 expect 함수가 실제로 데이터가 응답에 포함되어 있는지 확인하지 않고 있는지 궁금합니다.테스트 기능이 유효하지 않습니다.

콘솔에 resolve이 표시되어 그래프 호출이 작동하고 약속이 해결되었지만 이벤트에 expect(data).to.include 문에 임의의 데이터가 포함되어 있지 않아도 테스트가 통과 함을 알 수 있습니다. 약속이 해결되면 응답을 테스트 할 수 있습니까?

var promise = new Promise(function(resolve, reject) { 
var eventFB1 = graph.get('132166232459578/posts', 
    {limit: 1, 
    access_token: 't0k3n' 
    }); 

    if (typeof eventFB1 !== 'undefined') { 
    resolve(eventFB1); 
    console.log('resolve'); 
    } 
    else { 
    reject(Error("It broke")); 
    console.log('reject'); 

    } 
    }); 

    return promise.then(function(data) { 
    expect(data).to.include('Event name: Testing London eveng 23498723rstni'); 
    console.log(data); 
}); 
+0

이 내용은 설명서에서 다룹니다. –

+0

많은 것들이 문서로 다루어 지지만 모든 사람들에게 분명하지 않으므로 여기에서 지원을 요청합니다. 이것이 유효한 접근 방법이 아닌가? 흥미롭게도, 나를 위해 일하는 것으로 밝혀진 대답은 문서에 오류가 있다고 생각됩니다. http://mochajs.org "Mocha v3.0.0 이상에서는 Promise를 반환하고 done을 호출하면 결과가 나타납니다. 예외적으로 이것은 일반적으로 실수이기 때문에 : " – KindOfGuy

+0

나는 모욕적 인 행동을하려는 것이 아니지만 '비동기 코드'는 문서의 목차 **에있는 네 번째 항목입니다. 홈페이지 바로 아래에 있습니다. 문서의 가장 중요한 검사는 그것을 잡았어야합니다. 당신이 google 'mocha 비동기 테스트'를하는 경우 나타나는 모든 훌륭한 것들을 말할 것도 없습니다. 나는 여기에 명백한 것들에 대해서도 물어 봤지만, 적어도 "아, 내 잘못"이라고 말하는 은혜가있다. –

답변

0

테스트의 인수로 완료를 전달한 다음 "다음"메소드에서 호출해야합니다. done 인수는 지정된 테스트가 완료되었음을 모카에 알려줍니다.

it('should have the included string for data', (done) => { // <-- add done as argument 
    var promise = new Promise(function(resolve, reject) { 
    var eventFB1 = graph.get('132166232459578/posts', 
    { 
     limit: 1, 
     access_token: 't0k3n' 
    }); 

    if (typeof eventFB1 !== 'undefined') { 
     resolve(eventFB1); 
     console.log('resolve'); 
    } 
    else { 
     reject(Error("It broke")); 
     console.log('reject'); 
    } 
    }); 

    return promise 
    .then(function(data) { 
     expect(data).to.include('Event name: Testing London eveng 23498723rstni'); 
     console.log(data); 
     done(); // <-- call done 
    }); 
} 

테스트에서 오류가 발생하고 catch 블록에서 호출되지 할 경우, 테스트가 중지 아웃 시간 2 초 후에합니다.

+1

이 답변에 대해 투표가 왜 실패했는지 확실하지 않습니다. :: 어깨를 으깨는 사람 :: – VtoCorleone

관련 문제