Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

Node.js assert.fail() 함수 완벽 가이드 – 사용법과 예제

Node.js의 assert 모듈은 함수나 값의 조건을 검증(어설션)하기 위한 다양한 기능을 제공합니다. 그중 assert.fail() 함수는 어떤 조건도 검사하지 않고 즉시 AssertionError를 발생시키는 특수한 함수입니다. 이때 생성되는 에러는 기본 메시지이거나, 개발자가 직접 전달한 사용자 정의 메시지일 수 있습니다.

문법(Syntax)

assert.fail(message)

매개변수(Parameters)

  • message – 선택적(optional) 매개변수입니다. 함수가 실행될 때 출력할 사용자 정의 메시지를 지정합니다. 생략하면 기본 메시지가 사용됩니다.

assert 모듈 설치하기

npm install assert

assert 모듈은 Node.js에 내장(built-in)되어 있으므로 별도 설치 없이 바로 사용할 수 있습니다. 최신 버전의 assert 모듈 버전을 확인하려면 아래 명령어를 실행하세요.

npm version assert

모듈 불러오기

const assert = require("assert").strict;

strict 모드로 불러오면 더 엄격한 비교 방식이 적용되어 테스트 코드 작성 시 권장됩니다.

예제 1: 기본 메시지로 에러 발생시키기

먼저 assertFail.js라는 이름의 파일을 생성하고 아래 코드를 복사해 넣습니다. 파일 생성 후에는 다음 명령어로 코드를 실행할 수 있습니다.

node assertFail.js

assertFail.js

// 모듈 불러오기
const assert = require('assert').strict;

// 함수 호출
try {
    assert.fail("Error Occured");
} catch(error) {
    console.log("Error:", error)
}

출력 결과

C:\home\node>> node assertFail.js
Error: { AssertionError [ERR_ASSERTION]: Error Occured
      at Object. (/home/node/mysql-test/assert.js:6:9)
      at Module._compile (internal/modules/cjs/loader.js:778:30)
      at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
      at Module.load (internal/modules/cjs/loader.js:653:32)
      at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
      at Function.Module._load (internal/modules/cjs/loader.js:585:3)
      at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
      at startup (internal/bootstrap/node.js:283:19)
      at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
generatedMessage: false,
name: 'AssertionError [ERR_ASSERTION]',
code: 'ERR_ASSERTION',
actual: undefined,
expected: undefined,
operator: 'fail' }

출력 결과에서 확인할 수 있듯이, assert.fail()은 어떤 값도 비교하지 않고 지정된 메시지와 함께 ERR_ASSERTION 코드를 가진 AssertionError를 즉시 던집니다.

예제 2: 사용자 정의 에러 객체 전달하기

이번에는 문자열 대신 커스텀 에러 객체를 전달하는 예제를 살펴보겠습니다.

// 모듈 불러오기
const assert = require('assert').strict;

// 함수 호출
try {
    assert.fail(new TypeError("Custom Defined Error: Not Supported"));
} catch(error) {
    console.log("Error:", error)
}

출력 결과

C:\home\node>> node assertFail.js
Error: TypeError: Custom Defined Error: Not Supported
   at Object. (/home/node/mysql-test/assert.js:6:14)
   at Module._compile (internal/modules/cjs/loader.js:778:30)
   at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
   at Module.load (internal/modules/cjs/loader.js:653:32)
   at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
   at Function.Module._load (internal/modules/cjs/loader.js:585:3)
   at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
   at startup (internal/bootstrap/node.js:283:19)
   at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)

위 예제에서는 커스텀 에러인 TypeError를 전달했습니다. 문자열이 아닌 Error 인스턴스를 인자로 넘기면, AssertionError 대신 해당 에러 객체가 그대로 발생한다는 점이 핵심입니다. 이를 활용하면 테스트 중 특정 상황에서 의도적으로 원하는 타입의 에러를 강제로 발생시킬 수 있습니다.