Mocha의 Expect.to.throw 누락된 오류 발생 문제
Chai의 Expect.to.throw를 활용하여 노드에서 예외를 테스트하는 경우 .js 애플리케이션을 사용하는 경우 예기치 않은 결과가 발생할 수 있습니다. 포착되지 않은 오류로 인해 테스트가 실패했지만 테스트를 try...catch로 래핑하고 포착된 오류가 성공했다고 주장하는 경우, Expect.to.throw의 기능에 의문을 제기할 수 있습니다.
문제의 핵심 Expect.to.throw가 작동하는 방식에 있습니다. 예외 발생을 효과적으로 테스트하려면 함수를 입력으로 필요합니다. 예상할 함수를 전달하면 해당 함수를 호출하고 예외가 발생했는지 확인할 수 있습니다.
제공된 코드 조각에서는 model.get('z')의 결과를 예상할로 직접 전달합니다. . 그러나 이 접근 방식은 함수 자체 대신 함수의 반환 값을 전달합니다. 이를 수정하려면 호출 시 model.get을 실행하는 함수를 Expect에 제공해야 합니다.
업데이트된 코드:
expect(model.get.bind(model, 'z')).to.throw('Property does not exist in model schema.'); expect(model.get.bind(model, 'z')).to.throw(new Error('Property does not exist in model schema.'));
바인드 메소드를 사용하여, 새로운 함수가 생성됩니다. 호출되면 지정된 인수로 model.get을 호출하여 model.get('z')의 실행을 시뮬레이션합니다. 이를 통해 Expect.to.throw는 함수 실행 중에 예외가 발생하는지 여부를 평가할 수 있습니다.
위 내용은 Mocha의 Expect.to.throw가 예상 오류를 포착하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!