Jest에 대한 (제한적이지만) 노출 expect().toThrow()
에서 특정 유형의 오류가 발생했는지 테스트하려는 경우에 적합한 것으로 나타났습니다 .
expect(() => functionUnderTest()).toThrow(TypeError);
또는 특정 메시지와 함께 오류가 발생합니다.
expect(() => functionUnderTest()).toThrow('Something bad happened!');
둘 다하려고하면 오 탐지를 얻게됩니다. 예를 들어 코드가 throw RangeError('Something bad happened!')
되면이 테스트는 다음을 통과합니다.
expect(() => functionUnderTest()).toThrow(new TypeError('Something bad happened!'));
시도를 사용하여 제안 bodolsog에 의한 대답은 / 캐치 대신 사용할 수있는, 가까운, 오히려 사실 기대보다가 캐치의 주장이 충돌하는 기대 보장하기 위해 허위로 expect.assertions(2)
테스트의 시작에 2
기대 주장의 수는 . 나는 이것이 테스트의 의도를보다 정확하게 설명한다고 생각합니다.
오류의 유형 및 메시지를 테스트하는 전체 예 :
describe('functionUnderTest', () => {
it('should throw a specific type of error.', () => {
expect.assertions(2);
try {
functionUnderTest();
} catch (error) {
expect(error).toBeInstanceOf(TypeError);
expect(error).toHaveProperty('message', 'Something bad happened!');
}
});
});
functionUnderTest()
오류가 발생하지 않으면 어설 션이 적중되지만 expect.assertions(2)
테스트는 실패하고 테스트는 실패합니다.