>웹 프론트엔드 >JS 튜토리얼 >Node.js 테스트에서 `expect.to.throw`가 발생한 오류를 확인하지 못하는 이유는 무엇입니까?

Node.js 테스트에서 `expect.to.throw`가 발생한 오류를 확인하지 못하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-15 15:57:03213검색

Why Does `expect.to.throw` Fail to Assert Thrown Errors in Node.js Tests?

Chai: Node.js에서 파악하기 어려운 Expect.to.throw 해결

Chai의 Expect.to.throw는 Node.js에서 난처할 수 있습니다. js 테스트 중입니다. 발생한 오류를 주장하려는 의도된 목적에도 불구하고 코드 조각에 직접 적용하면 종종 실패합니다.

문제 이해:

예제 테스트 사례를 고려하세요.

it('should throw an error if you try to get an undefined property', function (done) {
  // Passing the result of model.get('z') directly fails
  expect(model.get('z')).to.throw('Property does not exist in model schema.');
});

실제로 오류가 발생했지만 이 테스트는 실패했습니다. 일반적인 오해는 Expect.to.throw가 발생한 오류의 검색 및 어설션을 처리한다는 것입니다.

해결책: 함수 전달 수용:

이 문제를 해결하는 열쇠 문제는 결과 대신 Expect.to.throw에 함수를 전달하는 데 있습니다. 이 함수는 예상에 의해 실행되어 발생한 오류의 검색 및 유효성 검사를 트리거합니다.

expect(model.get.bind(model, 'z')).to.throw('Property does not exist in model schema.');

이 수정된 코드에서 model.get은 모델 객체의 컨텍스트에 바인딩되고 'z'가 설정됩니다. 그 주장으로. 그런 다음 결과 함수가 Expect.to.throw에 전달되어 의도한 오류가 캡처되고 어설션되는지 확인합니다.

이 접근 방식을 따르면 Node.js에서 Expect.to.throw의 모든 기능을 활용할 수 있습니다. Node.js 테스트를 통해 발생한 오류 발생을 효과적으로 확인하고 코드의 견고성을 보장합니다.

위 내용은 Node.js 테스트에서 `expect.to.throw`가 발생한 오류를 확인하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.