Node.js의 assert 모듈은 함수 검증(assertion)을 위한 다양한 기능을 제공합니다. 그중 assert.notEqual() 함수는 두 값이 서로 같지 않은지를 검사하는 메서드로, 실제 값(actual)과 기대값(expected)이 동일할 경우 AssertionError를 발생시킵니다.
문법(Syntax)
assert.notEqual(actual, expected, [message])
매개변수(Parameters)
actual – 비교 대상이 되는 실제 값을 담는 매개변수입니다.
expected – actual 값과 비교할 기대값을 담는 매개변수입니다.
message – 선택 사항(optional) 매개변수로, 함수 실행 시 출력될 사용자 정의 메시지를 지정합니다.
Assert 모듈 설치하기
npm install assert
assert 모듈은 Node.js에 내장된 모듈이므로 별도 설치 없이 바로 사용할 수 있습니다. 최신 버전의 assert 모듈을 확인하려면 아래 명령어를 사용하세요.
npm version assert
모듈 불러오기
const assert = require("assert").strict;예제 1: 두 값이 같지 않은 경우
notEqual.js라는 이름의 파일을 생성하고 아래 코드를 작성한 뒤, 다음 명령어로 실행해 보세요.
node notEqual.js
// 모듈 불러오기
const assert = require('assert').strict;
var a = 3;
var b = "3";
try {
// a와 b가 같은지 검사
assert.notEqual(a, b)
console.log("a와 b는 같지 않습니다")
} catch(error) {
console.log("에러 발생: ", error)
}실행 결과
C:\home\node>> node notEqual.js a와 b는 같지 않습니다
위 예제에서 숫자 3과 문자열 "3"은 타입이 다르므로 느슨한 비교(==) 기준으로도 같지 않다고 판단되어 에러 없이 통과합니다.
예제 2: 두 값이 같은 경우
이번에는 두 값이 동일한 경우 어떻게 동작하는지 살펴보겠습니다.
// 모듈 불러오기
const assert = require('assert').strict;
var a = 3;
var b = 3;
try {
// a와 b가 같은지 검사
assert.notEqual(a, b)
console.log("a와 b는 같지 않습니다")
} catch(error) {
console.log("에러 발생: ", error)
}실행 결과
C:\home\node>> node notEqual.js
Error Occured: { AssertionError [ERR_ASSERTION]: Identical input passed to
notStrictEqual: 3
at Object.<anonymous> (/home/node/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: 3,
expected: 3,
operator: 'notStrictEqual' }두 값이 모두 3으로 동일하기 때문에 notStrictEqual 연산자 검증에 실패하며 AssertionError [ERR_ASSERTION]이 발생하는 것을 확인할 수 있습니다.
정리
assert.notEqual()은 두 값이 같지 않음을 보장해야 하는 테스트 상황에서 유용하게 사용됩니다. 값이 서로 다르면 아무 일도 일어나지 않고(검증 통과), 값이 같으면 AssertionError를 던져 개발자에게 문제를 알려줍니다. 참고로 이 함수는 느슨한 비교(loose comparison)를 수행하므로, 타입까지 엄격하게 검사하려면 assert.notDeepStrictEqual() 또는 strict 모드를 활용하는 것이 좋습니다.