2017-11-27 3 views
0

jasmine으로 쓰고있는 새 패키지를 테스트하는 데 어려움이 있습니다. package 아이디어는 오류에 대한 리스너 (노드에서) "uncaughtException"을 생성하고 해당 이벤트가있을 경우 작업 할 콜백을 제공하는 것입니다.jasmine 테스트가 잡히지 않은 오류 이벤트 핸들러

describe('AllErrorHandler', function() { 
    it('error is passed to the callback', function() { 
     const error = new Error("testError"); 
     const callbackError; 

     let errorHandler = new AllErrorHandler((error) => { 
      callbackError = error; 
     }) 

     throw error; 

     expect(callbackError).toBe(error); 
    }) 
}) 

어떻게하면됩니까?

답변

0

우선, error은 기능이 아닙니다. throw error이 아니라 throw error()이 필요합니다.

그러면 던지기 직전에 도달 할 수 없습니다 (모든 것을 try-catch로 감싸는 경우는 제외). 테스트의 전체 지점을 다소 상회합니다.)

다음과 같이 시도해 볼 수 있습니다. 그러나 나는 이것이 효과가있을 것이라고 100 % 아니에요.

describe('AllErrorHandler', function() { 
    it('error is passed to the callback', function (done) { 
     const error = new Error("testError"); 

     let errorHandler = new AllErrorHandler((arg1) => { 
      expect(arg1).toBe(error); 
      done(); 
     }); 

     setTimeout(() => { 
      throw error; 
     }, 0) 
    }) 
}) 
+0

참으로 예를 쓰는 동안 오타가 발생했습니다. 나는 그것을 고쳐야 할 것이다. –

+0

감사합니다. 그리고 setTimeout 함수에 관해서는 어떻게 작동하는지 설명해 줄 수 있습니다. –

+0

당신은 오류를 던지고 싶지만 현재의 함수가 예외없이 실행을 끝내기를 원한다. 따라서 다른 함수를 생성하고 나중에'setTimeout' 또는'setImmediate'를 사용하여 호출해야합니다. –

관련 문제