ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL 196일 - node에서 presentation 레이어 유닛 테스트 구현해보기
    공부/JavaScript 2022. 7. 13. 21:14

     

    시간이 좀 걸리긴 했는데 아래처럼 구현이 가능했다.

    Couponservice 안에는 hasIssuableCoupons 메서드가 있고, 이 값이 true, false인 경우를 mock해서 테스트를 진행해 봤다.

     

    근데 조금 맘에 안 드는 부분은 에러가 발생하는 부분인데, 찾아보면 assert.throw(fn, Error, errorMessage) 이런 식으로 사용 하라는데 아무리 해봐도 안된다... 근데 다른 사람도 안 돼서 그런지 다른 방법으로 작성한 코드를 발견했다...!

    아무튼 완성...!

    내일은 service layer 코드 작성을 해봐야 겠다.

    import sinon from 'ts-sinon';
    import CouponService from '../../layered/service/CouponService';
    import { assert, expect } from 'chai';
    import { hasIssueableCoupon } from '../../layered/presentation/CouponController';
    
    describe('쿠폰', async () => {
      afterEach(() => {
        sinon.restore();
      });
    
      it('발행 가능한 쿠폰이 있으면 true를 반환한다', async () => {
        sinon.mock(CouponService).expects('hasIssuableCoupons').returns(true);
    
        assert.equal(await hasIssueableCoupon(undefined, { benefitCompanyID: 'ANY' }), true);
      });
    
      it('발행 가능한 쿠폰이 있으면 false를 반환한다', async () => {
        sinon.mock(CouponService).expects('hasIssuableCoupons').returns(false);
    
        assert.equal(await hasIssueableCoupon(undefined, { benefitCompanyID: 'ANY' }), false);
      });
    
      it('제휴회사 id를 입력하지 않으면 에러가 발생한다.', async () => {
        try {
          await hasIssueableCoupon(undefined, {});
        }
        catch(err) {
          expect(err.message).to.equal("illegal argument");
        }
    
      });
    });
Designed by Tistory.