이후 개발을 하면서,
이전에 학습 자료에 있던 과제를 해보고 나서 하면
도움이 된 적이 있어서,
이렇게 적어둔다.
과제 안내
https://www.notion.so/wecode/Assignment-1-e94825f059d04f2fbea2917ecb407ca2
- calculate.js 코드
function add(a, b) {
if (b < 0) {
throw new Error("b가 0보다 작습니다.");
}
return a + b;
}
function subtract(a, b) {
return a - b;
}
function multiple(a, b) {
return a * b;
}
function divide(a, b) {
return a / b;
}
module.exports = { add, subtract, multiple, divide }
[복사를 위한 코드 재작성]
function add(a, b) {
if (b < 0) {
throw new Error("b가 0보다 작습니다.");
}
return a + b;
}
function subtract(a, b) {
return a - b;
}
function multiple(a, b) {
return a * b;
}
function divide(a, b) {
return a / b;
}
module.exports = { add, subtract, multiple, divide }
- calculate.test.js 코드
const { add, subtract, multiple, divide } = require("./calculate");
describe("calculate unit test", () => {
describe("add", () => {
test("add(1, 2)는 3이 되어야합니다.", () => {
expect(add(1, 2)).toBe(3);
});
test("add(1, -1)은 에러를 던집니다.", () => {
try {
add(1, -1);
} catch (err) {
expect(err).toBeInstanceOf(Error);
expect(err).toHaveProperty("message", "b가 0보다 작습니다.");
}
});
});
describe("subtract", () => {
test("subtract(2, 1)는 1이 되어야합니다.", () => {
expect(subtract(2, 1)).toBe(1);
});
});
describe("multiple", () => {
test("multiple(3, 4)는 12이 되어야합니다.", () => {
expect(multiple(3, 4)).toBe(12);
});
});
describe("divide", () => {
test("divide(10, 2)는 5가 되어야합니다.", () => {
expect(divide(10, 2)).toBe(5);
});
});
});
describe("calculate integration test", () => {
test("add(1, 3)과 subtract(4, 2)를 multiple한 결과는 8입니다.", () => {
const addResult = add(1, 3);
expect(addResult).toBe(4);
const subtractResult = subtract(4, 2);
expect(subtractResult).toBe(2);
expect(multiple(addResult, subtractResult)).toBe(8);
});
});
[복사를 위한 코드 재작성]
const { add, subtract, multiple, divide } = require("./calculate");
describe("calculate unit test", () => {
describe("add", () => {
test("add(1, 2)는 3이 되어야합니다.", () => {
expect(add(1, 2)).toBe(3);
});
test("add(1, -1)은 에러를 던집니다.", () => {
try {
add(1, -1);
} catch (err) {
expect(err).toBeInstanceOf(Error);
expect(err).toHaveProperty("message", "b가 0보다 작습니다.");
}
});
});
describe("subtract", () => {
test("subtract(2, 1)는 1이 되어야합니다.", () => {
expect(subtract(2, 1)).toBe(1);
});
});
describe("multiple", () => {
test("multiple(3, 4)는 12이 되어야합니다.", () => {
expect(multiple(3, 4)).toBe(12);
});
});
describe("divide", () => {
test("divide(10, 2)는 5가 되어야합니다.", () => {
expect(divide(10, 2)).toBe(5);
});
});
});
describe("calculate integration test", () => {
test("add(1, 3)과 subtract(4, 2)를 multiple한 결과는 8입니다.", () => {
const addResult = add(1, 3);
expect(addResult).toBe(4);
const subtractResult = subtract(4, 2);
expect(subtractResult).toBe(2);
expect(multiple(addResult, subtractResult)).toBe(8);
});
});
- 테스트 실습에서 진행한 위의 코드를 이용하여 아래의 요구사항을 진행해주세요.
- 전체 4개의 함수에서 a, b 두개의 매개변수가 숫자일 때만 결과를 return 하게 해주세요. (그 외에는 return NaN; 으로 처리해주세요.)
- 나누기(divide) 함수에서 b 매개변수가 0일 때, return Infinity; 로 처리해주세요.
- npx jest --coverage 명령어로 테스트 커버리지를 확인하신 다음, 테스트를 추가하여 전체 커버리지를 100%로 맞춰주세요.
- 위의 요구사항을 진행하신 다음 제출해야 하는 파일 및 이미지는 다음과 같습니다.
- 프로그램 파일 (calculator.js)
- 테스트 코드 파일 (calculator.test.js)
- 커버리지를 확인할 수 있는 이미지
- 요구사항을 제외하고도 추가로 넣고 싶은 테스트가 있다면 넣어도 무방합니다.
'Wecode - Project 3 (부트캠프) > 세션' 카테고리의 다른 글
Software Testing 2) - [TDD] 테스트 실습 + 추후에 따라해보기 ** (0) | 2023.10.27 |
---|---|
Software Testing 1) - [Software Test란 ? (0) | 2023.10.27 |
주니어 개발자 마인드셋 (0) | 2023.10.27 |
Docker를 활용한 AWS 실습 [개념] (0) | 2023.10.26 |
docker 세션 [개념, 명령어, docker file ] (0) | 2023.10.26 |