HANA -J

WIL [항해99] 5주차 - 같이 일하고 싶은 개발자 본문

what I Learnd/WIL

WIL [항해99] 5주차 - 같이 일하고 싶은 개발자

Hana-J 2021. 12. 5. 16:59

> 2021/11/29- 2021/12/04

>노드 심화 3주차 - 테스트 코드

https://hana-j.tistory.com/43

 

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