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

Node.js assert.equal() 함수 사용법과 예제 총정리

Node.js의 assert 모듈은 함수 검증(assertion)을 위한 다양한 기능을 제공하며, 그중 assert.equal() 함수는 실제 값(actual)과 기대 값(expected)이 서로 같은지 비교하는 데 사용됩니다. 조건이 충족되지 않으면 AssertionError가 발생합니다.

문법(Syntax)

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

매개변수(Parameters)

  • actual – 기대 값과 비교하여 평가할 실제 값입니다.

  • expected – 실제 값과 일치하는지 확인하기 위한 기대 값입니다.

  • message – 두 값이 일치하지 않을 경우 출력할 문자열 메시지입니다. 선택 사항(optional)으로 생략할 수 있습니다.

Assert 모듈 설치하기

npm install assert

assert 모듈은 Node.js에 내장(built-in)되어 있으므로 이 단계는 생략해도 됩니다. 최신 버전의 assert 모듈을 사용하려면 아래 명령어로 버전을 확인할 수 있습니다.

npm version assert

모듈 가져오기(Importing)

const assert = require("assert");

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

assertEqual.js라는 이름의 파일을 생성하고 아래 코드를 복사한 뒤, 다음 명령어로 실행합니다.

node assertEqual.js

assertEqual.js

// 모듈 가져오기
const assert = require('assert').strict;

var a = 21;
var b = 20;

// 함수 호출
try {
    // a와 b가 같은지 확인
    assert.equal(a, b);
} catch(error) {
    console.log("Error: ", error)
}

출력 결과

C:\home\node>> node assertEqual.js
Error: { AssertionError [ERR_ASSERTION]: Input A expected to strictly equal
input B:
+ expected - actual
- 21
+ 20
    at Object.<anonymous> (/home/node/mysql-test/assert.js:10: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: 21,
expected: 20,
operator: 'strictEqual' }

위 예제에서 두 값(21과 20)이 서로 같지 않기 때문에 AssertionError가 발생한 것을 확인할 수 있습니다.

예제 2: 타입이 달라도 내용이 같은 경우

이번에는 또 다른 예제를 살펴보겠습니다.

// 모듈 가져오기
const assert = require('assert');

var a = 20;
var b = '20';

// 함수 호출
try {
    // a와 b가 같은지 확인
    assert.equal(a, b);
    console.log("a and b are equal")
} catch(error) {
    console.log("Error: ", error)
}

출력 결과

C:\home\node>> node assert.js
a and b are equal

위 예제에서 a는 정수(integer)이고 b는 문자열(string)로 타입은 다르지만, 내용 자체는 동일합니다. 따라서 assert.equal()은 느슨한 동등성(loose equality) 비교를 수행하기 때문에 두 값이 같다고 판단하고 에러 없이 통과됩니다.

마무리

assert.equal()은 내부적으로 ==(느슨한 동등 연산자)와 유사하게 동작하므로, 타입까지 엄격하게 검증하려면 assert.strictEqual()를 사용하는 것이 좋습니다. 테스트 코드 작성 시 상황에 맞는 assert 함수를 선택하면 더 안정적인 코드 검증이 가능합니다.