-
TIL 190일 - node.js 테스트 코드...공부/JavaScript 2022. 7. 7. 23:51
컨트롤러
export const hasIssueableCoupon = async (_: any, args: any) => { const { benefitCompanyID }:{benefitCompanyID:string} = args if(!benefitCompanyID){ throw Error("invalid argument exception"); } return await CouponService.hasIssueableCouponByBenefitCompanyId(benefitCompanyID); }
서비스
export abstract class CouponService { public static async hasIssueableCouponByBenefitCompanyId(benefitCompanyID : string) { const list = await CouponRepository.findByBenefitIdAndLessThanExpiredAtAndUserIdIsNull({benefitCompanyID, expiredAt:new Date().toISOString()}); return list.length > 0; } }
레포지토리
export abstract class CouponRepository { public static async findByBenefitIdAndLessThanExpiredAtAndUserIdIsNull(args: { benefitCompanyID: string; expiredAt: string; }) { const { benefitCompanyID, expiredAt } = args; return await DB.Coupon.findAll({ limit: 1, where: { benefitCompanyID, userID: { [Op.eq]: null, }, expiredAt: { [Op.gte]: expiredAt, }, }, }); } }
위에처럼 짜봤다.
얼추 스프링이랑 비슷하게 보인다.
다만 sequelize를 사용하다 보니 domain(DDD 같은 도메인 말고 그냥 @Entity 달려있는 놈)을 작성하기가 애매하다고 생각이 들었다.
그리고 서비스나 컨트롤러 같은 경우엔 sinon?이라는 놈인가 아무튼 모킹해서 좀 쓰면 될 거 같은데 poersistence 부분은 어떻게 테스트하지...? 생각이 들었다.
찾아보니까 sequelize-mock이라는 놈이 있다.
https://sequelize-mock.readthedocs.io/en/stable/
그리고 sequelize typescript 라는 놈을 사용하면 spring과 매유 유사하게 사용할 수 있는 것으로 보인다. 음음
어오 이거 운동이랑 공부랑 같이 하니까 다 하고나면 기본 12시구만...
내일은 금요일이니까 깔짝만 하자...
그리고 이번엔 기존 프로젝트에서 진행하는게 아니라 새로운 레포 파서 해야긌다 ㅇㅇ
'공부 > JavaScript' 카테고리의 다른 글
TIL 195일 - sinon.js, chai, mocah (0) 2022.07.12 TIL 194일 - sequelize mock (0) 2022.07.11 TIL 189일 - node.js unit test 툴 (0) 2022.07.07 TIL 136일 - next.js header (0) 2022.05.14 TIL 110일 - node.js cheerio (0) 2022.04.19