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

Node.js assert.notDeepEqual() 함수 완벽 정리 – 사용법과 예제

Node.js의 assert 모듈은 코드 내에서 조건을 검증(어설션)하기 위한 다양한 기능을 제공합니다. 그중 assert.notDeepEqual() 함수는 실제 값(actual)과 기대 값(expected)이 서로 같지 않은지, 즉 깊이(deep) 수준에서 동일하지 않은지를 검사하는 역할을 합니다. 만약 두 값이 깊이 동일하다면 조건이 충족되지 않았다고 판단하여 AssertionError가 발생합니다.

문법(Syntax)

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

매개변수(Parameters)

  • actual – 비교 대상이 되는 실제 값을 담는 매개변수입니다.

  • expected – actual 값과 비교할 기대 값을 담는 매개변수입니다.

  • message – 선택 사항(optional)입니다. 어설션이 실패하여 오류가 발생할 때 출력되는 사용자 정의 메시지입니다.

assert 모듈 설치하기

npm install assert

assert 모듈은 Node.js에 기본으로 포함된 내장 모듈이므로 별도로 설치하지 않아도 됩니다. 최신 버전의 assert 모듈을 확인하려면 아래 명령어를 사용하세요.

npm version assert

모듈 가져오기(Import)

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

예제 1 – 두 값이 깊이 동일한 경우

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

node assertNotDeepEqual.js

assertNotDeepEqual.js

// 모듈 불러오기
const assert = require('assert').strict;
try {
    // 두 값은 서로 달라야 합니다.
    assert.notDeepEqual({ a: '21' }, { a: '21' });
} catch(error) {
    console.log("Error: ", error)
}

출력 결과

C:\home\node>> node assertNotDeepEqual.js
Error: { AssertionError [ERR_ASSERTION]: Identical input passed to
notDeepStrictEqual:
{
    a: '21'
}
        at Object.<anonymous> (/home/mayankaggarwal/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: true,
    name: 'AssertionError [ERR_ASSERTION]',
    code: 'ERR_ASSERTION',
    actual: { a: '21' },
    expected: { a: '21' },
    operator: 'notDeepStrictEqual' }

위 예제에서는 두 객체가 모두 { a: '21' }로 완전히 동일하기 때문에 notDeepEqual 조건이 실패하고 AssertionError가 발생했습니다.

예제 2 – 데이터 타입이 다른 경우

이번에는 하나는 숫자형(number), 다른 하나는 문자열(string)인 경우를 살펴보겠습니다.

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

try {
    // 두 값은 서로 달라야 합니다.
    assert.notDeepEqual({ a: 21 }, { a: '21' });
    console.log("Values are not identical")
} catch(error) {
    console.log("Error: ", error)
}

출력 결과

C:\home\node>> node assertNotDeepEqual.js
Values are not identical

위 예제에서 한쪽 값은 숫자 타입(21)이고 다른 쪽은 문자열 타입('21')입니다. strict 모드에서는 타입까지 엄격하게 비교하기 때문에 두 값은 같지 않다고 판단되며, 따라서 어설션이 통과되고 "Values are not identical" 메시지가 출력됩니다.