Notice
Recent Posts
Recent Comments
Link
HANA -J
WIL [항해99] 5주차 - 같이 일하고 싶은 개발자 본문
> 2021/11/29- 2021/12/04
>노드 심화 3주차 - 테스트 코드
TIL -TDD
>2021/11/27 테스트 주도 개발을 하는 이유? 1. 디버깅 시간을 단축해준다. 테스팅 환경이 구축되어있다면 자동화 된 유닛 테스팅으로 특정 버그를 쉽게 찾아낼 수 있다. 2. 테스트 코드와 함께 작성
hana-j.tistory.com
> 테스트 예시
//product.test.js 테스트 파일 하나 생성, 익스포트 했던 모듈 임포트
const productController = require('../../controller/products'); //컨트롤러 파일
const productModel = require('../../models/Product'); //데이터베이스
productModel.create = jest.fn(); //실제 데이터 베이스가 아닌 Mock함수를 생성해서 테스트
describe("Product Controller Create",()=>{
beforeEach(()=>{
req.body = newProduct; //임의로 만들어둔 data파일에 값을 body에 넣어준다.
})
// 프로덕트함수 생성을 해서 테스트
it("should have a createProduct function",()=>{
expect(typeof productController.createProduct).toBe("function");
})
//컨트롤러안에 함수가 호출될때, 디비에 잇는 모델의 create메서드가 호출되는가
it("should call ProductModel.create",async()=>{
await productController.createProduct(req, res, next);
expect(productModel.create).toBeCalledWith(newProduct);
})
> Mock 함수 ?
Mocking의 목적은 우리가 컨트롤할 수 없는 무엇인가를 대체하는 것이기 때문에, 우리가 대체하는 것이 필요로하는 모든 기능을 갖고 있는게 중요합니다. (위의 코드에서는 데이터베이스를 대체)
Mock 함수는 다음 기능을 제공
- 함수호출 Capture
- Return Value 설정
- 구현 변경하기
Mock 함수 인스턴스를 만드는 가장 간단한 방법으로 jest.fn() 을 사용
//product.js
const productModel = require('../models/Product');
//expect(typeof productController.createProduct).toBe("function"); 테스트 코드에 매칭되는 코드
exports.createProduct = async( req, res, next)=>{
try{
//expect(productModel.create).toBeCalledWith(newProduct); 테스트 코드에 매칭
const createdProduct = await productModel.create(req.body);
res.status(201).json(createdProduct);
}
catch(erorr){
next(erorr)
}
> 테스트 명령어 (Matcher)
toBe(a) // 예상한 값이 매개변수와 같은 값일 것인지 확인
toEqual(obj) // 매개변수(객체)와 같은 값일 것이라 예상, 객체가 가진 값의 비교
not.toBe(a) // 뒤의 결과를 부정하는 값과 비교
toBeNull() // 예상한 값이 null 인지 확인
toBeUndefined() // 예상한 값이 undefined 인지 확인
toBeDefined() // 예상한 값이 undefined 가 아닌지 확인
toBeTruthy() // 예상한 값이 truthy 한 값인지 확인
toBeFalsy() // 예상한 값이 falsy 한 값인지 확인
toBeGreaterThan(number); // number보다 큰 값인지 확인
toBeGreaterThanOrEqual(number); // number보다 크거나 같은 값인지 확인
toBeLessThan(number); // number보다 작은 값인지 확인
toBeLessThanOrEqual(number); // number보다 작거나 같은 값인지 확인
toMatch(string) // string을 포함하는 문자열인지 확인
toContain('item') // item을 포함하는 배열(iterator)인지 확인
toThrow() // 예외를 발생시키는지 확인
> 내가 생각하는 같이 일하고 싶은 개발자
현재 내가 생각하기에 같이 일하고 싶은 개발자라고 함은 아래 링크에 공유해둔 개발자 같은 분이라고 생각한다.
나의 역량을 먼저 쌓고 그 지식과 자신의 경험을 남들이 알기 쉽게 공유할 수 있는 능력, 말을 기승전결 있게 잘 하는것,
커뮤니케이션을 통해 내가 부족한 점을 알고 개선하기위해 뭘 노력해야하는지 고민하고 해결하려는 자세.
이러한 요소들을 갖춘 '나' 라는 사람이 남들이 봤을 때 같이 일하고 싶은 개발자라고 생각하지 않을까 ...
https://www.youtube.com/watch?v=V9AGvwPmnZU
728x90
'what I Learnd > WIL' 카테고리의 다른 글
WIL [항해99] 7주차 - 내가 공부한 것 (0) | 2021.12.19 |
---|---|
WIL [항해99] 6주차 - 협업이란 (0) | 2021.12.11 |
WIL -ORM , SQL (0) | 2021.11.28 |
WIL [항해99] 3주차 - NPM, REST (0) | 2021.11.21 |
WIL [항해 99] 2주차 - ECMAScript (0) | 2021.11.14 |
Comments