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

Node.js assert.strictEqual() 함수 사용법 완벽 정리

Node.js의 assert 모듈은 함수의 동작을 검증(어설션)하는 데 필요한 다양한 기능을 제공합니다. 그중 assert.strictEqual()는 두 값이 엄격하게(strictly) 같은지 비교하는 함수로, 자바스크립트의 일치 연산자(===)와 동일한 기준으로 타입과 값까지 모두 비교합니다. 두 값이 다르면 AssertionError를 발생시킵니다.

문법(Syntax)

assert.strictEqual(actual, expected[, message])

매개변수 설명

  • actual – 실제 평가 대상이 되는 값입니다. 기대값과 비교할 실제 값을 의미합니다.

  • expected – 개발자가 기대하는 값입니다. actual 값과 일치하는지 검사됩니다.

  • message – 두 값이 일치하지 않을 때 출력할 에러 메시지 문자열입니다. 선택 사항(optional)이며, 생략하면 기본 에러 메시지가 표시됩니다.

assert 모듈 설치하기

npm install assert

assert 모듈은 Node.js에 내장된 코어 모듈이므로 별도 설치 없이 바로 사용할 수 있습니다. 현재 설치된 버전을 확인하려면 아래 명령어를 실행하세요.

npm version assert

모듈 불러오기

const assert = require('assert');

예제 1: 두 값이 일치하는 경우

먼저 assertStrictEqual.js라는 이름의 파일을 생성하고 아래 코드를 작성합니다. 이후 다음 명령어로 코드를 실행할 수 있습니다.

node assertStrictEqual.js

assertStrictEqual.js

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

var a = "TutorialsPoint";
var b = "TutorialsPoint";

try {
    // strictEqual 함수로 두 값의 일치 여부 검사
    assert.strictEqual(a, b);
    console.log("실제 값과 기대 값이 일치합니다")
} catch(error) {
    console.log("Error: ", error)
}

출력 결과

C:\home\node>> node assertStrictEqual.js
실제 값과 기대 값이 일치합니다

위 예제에서 변수 a와 b는 문자열 내용뿐 아니라 타입까지 완전히 동일하므로, 에러 없이 정상적으로 통과되는 것을 확인할 수 있습니다.

예제 2: 두 값이 일치하지 않는 경우

이번에는 서로 다른 문자열을 비교해 보겠습니다.

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

var a = "Welcome to TutorialsPoint";
var b = "TutorialsPoint";

try {
    // strictEqual 함수로 두 값의 일치 여부 검사
    assert.strictEqual(a, b);
    console.log("실제 값과 기대 값이 일치합니다")
} catch(error) {
    console.log("Error: ", error)
}

출력 결과

C:\home\node>> node assertStrictEqual.js
Error: { AssertionError [ERR_ASSERTION]: Input A expected to strictly equal
input B:
+ expected - actual

- 'Welcome to TutorialsPoint'
+ 'TutorialsPoint'
      at Object. (/home/node/test/assert.js:9: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: true,
name: 'AssertionError [ERR_ASSERTION]',
code: 'ERR_ASSERTION',
actual: 'Welcome to TutorialsPoint',
expected: 'TutorialsPoint',
operator: 'strictEqual' }

두 문자열이 서로 다르기 때문에 assert.strictEqual()는 AssertionError(ERR_ASSERTION)를 발생시켰습니다. 에러 객체에는 실제 값(actual), 기대 값(expected), 사용된 연산자(operator) 등 디버깅에 유용한 정보가 함께 담겨 있어, 테스트 실패 원인을 쉽게 파악할 수 있습니다.