2024. 6. 13. 23:24γTIL
π‘ν μ€νΈμ½λ(Test Code)
1. ν μ€νΈ μ½λ
- ν μ€νΈμ½λλ λ§ κ·Έλλ‘ μμ±ν μ½λμ λ¬Έμ κ° μλμ§ μλλλ‘ λμνλμ§ ν μ€νΈνκΈ° μν΄ μμ±νλ μ½λμ΄λ€.
- ν μ€νΈμ½λμ λͺ©μ μ "λ΄ μ½λκ° λ©μ©‘νλ€"λ₯Ό μ¦λͺ νκΈ° μν κ²μ΄ μλλΌ, "λ΄ μ½λκ° λ©μ©‘νλ€λ©΄ κ²°κ³Όκ° μ΄λ κ² λμμΌ νλ€"λΌλ κΈ°λμΉλ₯Ό μ€μ νκ³ κ²μ¦νκΈ° μν κ²μ΄λ€.
- λ°λΌμ ν μ€νΈμ½λλ₯Ό μμ±ν λλ ν μ€νΈ κΈ°λ³Έ μμΉμ€ "ν μ€ν μ κ²°ν¨μ΄ μλ κ²μ΄ μλλΌ, κ²°ν¨μ μ‘΄μ¬λ₯Ό 보μ¬μ£Όλ κ²μ΄λ€." λΌλ μμΉμ μμλκ³ μμ±ν΄μΌνλ€.
2. ν μ€νΈ μ½λμ μ’ λ₯
- λ¨μ ν μ€νΈ (Unit Test) : κ°μ₯ μμ κ·λͺ¨μ κΈ°λ₯μ ν μ€νΈνλ€.
- ν΅ν© ν μ€νΈ (Integration Test) : λ€μν κΈ°λ₯μ ν©μ³€μλ μκΈ°λ λ¬Έμ λ₯Ό λ°©μ§νκΈ° μν ν μ€νΈμ΄λ€.
- E2E ν μ€νΈ (End-to-end Test) : λμμ λ(μ’ λ¨ κ°)μ, λ°±μλλΆν° μμν΄ μ΅μ’ μ μΌλ‘ μΉνμ΄μ§κ° μνλλλ‘ λμνλ©° μνλ λ°μ΄ν°λ₯Ό μ 보μ¬μ£Όλμ§ νμΈνλ ν μ€νΈμ΄λ€.
3. ν μ€ν νλ μμν¬ Jest
- Jestλ Node.jsλ₯Ό ν΅ν΄ μ¬μ©νκ³ μλ μΈμ΄μΈ JavaScriptμμ μ¬μ©μ΄ κ°λ₯ν ν μ€ν νλ μμν¬μ€ νλμ΄λ€.
- Jestλ λ€λ₯Έ ν μ€ν νλ μμνΈμ€ κ°μ₯ ν μ€νΈ μ½λμ ννμ΄ κ°κ²°νμ¬ λ§μ κ°λ°μλ€μκ² μ¬λλ°μΌλ©° μ¬μ©λκ³ μμ΅λλ€.
1) Jest μ¬μ©μ μ€λΉ
<λͺ¨λ μ€μΉ>
# DevDependenciesλ‘ jestλ₯Ό μ€μΉν©λλ€.
yarn add -D jest
package.json νμΌ μμ
{
"license": "MIT",
...
}
μλμ μΆκ°
{
"type": "module",
"scripts": {
"test": "node --experimental-vm-modules node_modules/.bin/jest"
},
}
// => yarn test λͺ
λ Ήμ΄ μ€ν κ°λ₯
2) ν μ€νΈ μ½λ νμΌ μμ± & μμ±
- μΌλ°μ μΈ κ΄λ‘λ‘ ν μ€νΈ νμΌμ [ ν μ€νΈν νμΌμ΄λ¦.spec.js ] μ κ°μ νμμΌλ‘ λ§λ λ€.
- test() : λ¨μ ν μ€νΈλ₯Ό λ¬Άμ΄μ£Όλ ν¨μμ΄λ€.
- expect(): νΉμ κ°μ΄ μ μμ μΌλ‘ μλνλμ§ νμΈνκΈ° μν ννμμ μμ±ν μ μκ² ν΄μ£Όλ ν¨μμ΄λ€.
//ν
μ€νΈ μ½λ μμ
import { isEmail } from './validation';
test('μ
λ ₯ν μ΄λ©μΌ μ£Όμμλ "@" λ¬Έμκ° 1κ°λ§ μμ΄μΌ μ΄λ©μΌ νμμ΄λ€.', () => {
expect(isEmail("my-email@domain.com")).toEqual(true); // 1κ°λ§ μλ μν©
expect(isEmail("my-email@@@@domain.com")).toEqual(false); // μ¬λ¬κ° μλ μν©
expect(isEmail("my-emaildomain.com")).toEqual(false); // νλλ μλ μν©
});
test("μ
λ ₯ν μ΄λ©μΌ μ£Όμμ 곡백(μ€νμ΄μ€)μ΄ μ‘΄μ¬νλ©΄ μ΄λ©μΌ νμμ΄ μλλ€.", () => {
expect(isEmail("myemail@domain.com")).toEqual(true);
expect(isEmail("my email@domain.com")).toEqual(false);
});
test("μ
λ ₯ν μ΄λ©μΌ μ£Όμ 맨 μμ νμ΄ν(-)μ΄ μμΌλ©΄ μ΄λ©μΌ νμμ΄ μλλ€.", () => {
expect(isEmail("e-m-a-i-l@domain.com")).toEqual(true);
expect(isEmail("-email@domain.com")).toEqual(false);
});
// isEmailν¨μ λλ²κΉ
μμ
export const isEmail = (value) => {
const email = (value || '');
if (email.split('@').length !== 2) {
return false;
} else if (email.includes(' ')) {
return false;
} else if (email[0] === '-') {
return false;
}
return true;
};
*μ 리νλ©΄μ λ€μ μ΄ν΄νλ λ° μμ§ μ¨μ ν μ΄ν΄κ° λμ§μλλ€..
**μΆμ² ν μ€ν νλ μμν¬ μ΄λ―Έμ§
'TIL' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
TIL (μλ¬νΈλ€λ§ & try...catch) (0) | 2024.06.17 |
---|---|
TIL (νμ΅μ§λ¬Έ &λ΅λ³) (0) | 2024.06.14 |
TIL ( Layered Architecture Pattern ) (0) | 2024.06.12 |
TIL (μν€ν μ² ν¨ν΄) (0) | 2024.06.11 |
TIL ( κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° ) (0) | 2024.06.10 |