try-catch 구문을 사용하는 방식은 효과적이지만 코드가 길어지고 작성하기 번거롭다. 대부분의 다른 프레임워크와 마찬가지로 제스트는 이러한 시나리오를 간단하게 처리할 수 있는 expect().toThrowError() 메서드를 지원한다.
예제 2-26 expect().toThrowError() 메서드 사용하기
// __tests__/password-verifier1.spec.js
test('verify, with no rules, throws exception', () => {
const verifier = makeVerifier();
expect(() => verifier.verify('any input'))
.toThrowError(/no rules configured/); ➊
});
➊ 정확한 문자열을 찾는 대신 정규 표현식을 사용한다.
예제 2-26에서는 정확한 문자열을 찾는 대신 정규 표현식을 이용하여 특정 문자열이 포함되어 있는지 검사한다. 이렇게 하면 나중에 문자열이 바뀌어도 테스트가 깨지지 않도록 만들어 좀 더 안정적으로 테스트할 수 있다. toThrowError() 함수는 다양한 옵션이 있는데, 자세한 내용은 제스트 공식 문서25에서 확인할 수 있다.