Node.js에서는 코드의 동작을 검증하기 위해 다양한 단언(assertion) 함수들을 제공하고 있다. 이 중 assert.doesNotThrow()와 assert.doesNotReject() 함수는 코드 블록이 에러를 발생시키지 않는다는 것을 확인하는데 사용된다. 그러나 이 두 함수는 각각 다른 유형의 코드에 적용되므로 그 차이점을 이해하는 것이 중요하다.
1. assert.doesNotThrow(block[, error][, message]): 이 함수는 동기 코드 블록이 주어진 에러를 발생시키지 않는지 확인한다. 만약 코드 블록이 에러를 발생시키면, 그 에러는 무시되고 대신 AssertionError가 발생한다. 선택적으로 error 인자를 제공하여 특정 타입의 에러만 검사할 수 있다. 아래는 예시이다.
const assert = require('assert');
function doesNotError() {
if (Math.random() < 0.5) {
throw new Error('Random error!');
}
}
try {
assert.doesNotThrow(
doesNotError,
Error,
'The function doesNotError has thrown an exception'
);
console.log('The function doesNotError has not thrown an exception');
} catch (err) {
console.error(err);
}
2. assert.doesNotReject(block[, error][, message]): 이 함수는 비동기 코드 블록이 주어진 에러를 발생시키지 않는지 확인한다. block은 Promise를 반환해야 한다. 만약 Promise가 거부되면, 그 거부 값은 무시되고 대신 AssertionError가 발생한다. 아래는 예시이다.
const assert = require('assert');
async function doesNotReject() {
if (Math.random() < 0.5) {
throw new Error('Random error!');
}
}
assert.doesNotReject(
doesNotReject(),
Error,
'The function doesNotReject has thrown an exception'
)
.then(() => console.log('The function doesNotReject has not thrown an exception'))
.catch((err) => console.error(err));
결국, assert.doesNotThrow()는 동기 코드를, assert.doesNotReject()는 Promise를 반환하는 비동기 코드를 검사하는데 사용된다. 이들 함수를 이해하고 적절히 사용함으로써, 코드가 예상대로 동작하는지 확신할 수 있고, 그렇지 않다면 어디서 문제가 발생하는지를 식별할 수 있다.
'Programming > Node.js' 카테고리의 다른 글
[Node.js] 자주 발생하는 TypeError 해결하기: 'Cannot read property of undefined' (0) | 2023.05.02 |
---|---|
[Node.js] NPM에서 NODE_ENV와 DevDependencies 이해하기 (0) | 2023.04.29 |
[Mocha] DB 접근 최소화를 위한 Mocha 테스트 코드 작성법 (0) | 2023.04.21 |
[Node.js] DeprecationWarning: Buffer() is deprecated due to security and usability issues... 에러 (0) | 2022.12.13 |
[Node.js] Error: bind EADDRINUSE null:80 (0) | 2022.12.08 |