(TIL)오늘은 간단하게...

낚시하는 곰·2025년 6월 16일

jungle TIL

목록 보기
17/20

test

getAll()

목표 : movies의 list를 check해야 함

  1. movies가 비어있는 지 check
  2. getAll()의 type이 list type인지 check

getOne()

목표 : id를 받아서 movies list에 있는 id를 find()해서 가져옴

  1. id값이 number type인 지 check(typeScript에서 에러를 내주는 건지 모르겠음)
  2. 반환값이 movies 요소인 지 check
  3. id가 존재하지 않으면 에러가 출력되는 지 check

deleteOne()

목표 : id를 받아서 movies list에 있는 id를 getOne()해서 해당 id만 filter()한 다음 list에서 pop()해준다.

솔직히 어떻게 뭘 test해야할 지 몰랐다.

  1. 삭제하기 전 movies의 length를 확인해서 삭제한 후의 length가 -1이 감소했는 지 check

Create()

목표 : 하나의 dict를 받아서 list에 push()해줌.

  1. 추가하기 전과 후의 Length를 비교
  2. 나는 각 멤버가 맞게 생성이 됐는 지까지 확인을 했다.

upDate()

목표 : movies list에 있는 특정 요소의 멤버 값을 수정한다

  1. 멤버 값이 수정이 됐는 지 확인
  2. 잘못된 인자가 들어오면 예외 처리가 되는 지 확인

구현

describe('MoviesService', () => {
  let service: MoviesService;

  beforeEach(async () => {
    const module: TestingModule = await Test.createTestingModule({
      providers: [MoviesService],
    }).compile();

    service = module.get<MoviesService>(MoviesService);
  });

  it('should be defined', () => {
    expect(service).toBeDefined();
  });

  describe("getAll", () => {
     it("sholud return an array", () => {
      const result = service.getAll();

      expect(result).toBeInstanceOf(Array);
     })
  })

  describe("getOne", () => {
    it('moive를 정상적으로 반환합니다', () => {
      service.create({
        title: 'Test Movie',
        year: 2000,
        genres: ['test'],
      })

      const moive = service.getOne(1);
      expect(moive).toBeDefined();
      expect(moive.id).toEqual(1);
    })

    it('id가 존재하지 않으면 error를 출력하는 지 확인합니다', () => {
      expect(() => {
        service.getOne(2);
      }).toThrow(NotFoundException);
    })
  })

  describe("deleteOne", () => {
    it("제대로 delete 됐는 지 확인합니다.", () => {
      service.create({
        title: 'Test Movie',
        year: 2000,
        genres: ['test'],
      })
      
      expect(() => {
        const allMovies = service.getAll();
        service.deleteOne(1);
        const afterDelete = service.getAll();

        expect(afterDelete.length).toEqual(allMovies.length - 1);
      })
    })

    it('404를 뱉는 지 확인합니다.', () => {
      try{
        service.deleteOne(999);
      }catch(e){
        expect(e).toBeInstanceOf(NotFoundException);
      }
    })
  })

  describe('create', ()=> {
    it('모든 멤버가 정확히 생성되는 지 check', () => {
      const beforeCreate = service.getAll().length;
      service.create({
        title: 'Test Movie',
        year: 2000,
        genres: ['test'],
      })

      const afterCreate = service.getAll().length;
      expect(afterCreate).toBe(beforeCreate + 1);
      
      const movie = service.getOne(1);
      expect(movie.title).toEqual('Test Movie');
      expect(movie.year).toEqual(2000);
      expect(movie.genres).toEqual(['test']);
    })
  })

  describe('update', () => {
    it('movie 멤버가 update 됐는 지 확인', () => {
      service.create({
        title: 'Test Movie',
        year: 2000,
        genres: ['test'],
      })

      const updateData = {
        title: 'update Movie',
        year: 1000,
      }

      service.update(1, updateData);
      const upDateMovie = service.getOne(1);
      
      expect(upDateMovie.title).toEqual('update Movie');
      expect(upDateMovie.year).toEqual(1000);
    })

    it('404를 뱉는 지 확인합니다.', () => {
      try{
        service.update(999, {});
      }catch(e){
        expect(e).toBeInstanceOf(NotFoundException);
      }
    })
  })
});

DB

memo

  • id(그냥 auto로 생성하면 될 것 같은데?)
  • title
  • descript
  • create date

User

  • id
  • first name
  • last name
  • password

Comment(댓글)

profile
취업 준비생 낚곰입니다!! 반갑습니다!!

0개의 댓글