TIL 07.13

박선우·2022년 7월 13일
0

WIL

목록 보기
12/33
post-thumbnail
  1. 오늘은 Jest 코드 작성을 위해 Supertest lib를 이용했다.!
  2. 소셜로그인을 통해 가입된 닉네임이 이모티콘을 사용하는 사용자에게 Mysql을 수정 하여 이모티콘 저장도 가능하게함!

Supertest 는 express 통합 테스트용 으로 내장 되어 있는 lib를 사용하기로 했다.

const request = require('supertest');
const app = require('../../app');

const token = process.env.JEST_TOKEN || ' ';
const token1 = process.env.JEST_TOKEN1 || ' ';
require('dotenv').config();

describe('회원가입 테스트', () => {
  it('닉네임 중복검사', (done) => {
    request(app)
      .post(`/user/idcheck/${encodeURI('공백크크크크크')}`)
      .then((res) => {
        expect(res.status).toBe(200);
        done();
      })
      .catch(console.log);
  });

  it('이메일 중복검사', (done) => {
    request(app)
      .post('/user/idcheck/test1234523@naver.com')
      .then((res) => {
        expect(res.status).toBe(200);
        done();
      });
  });

  it('회원가입', (done) => {
    request(app)
      .post('/user/signup/')
      .send({
        email: 'test123123@test.com',
        nickname: '공백123123',
        password: '12341234',
        confirmPassword: '12341234',
      })
      .then((res) => {
        expect(res.status).toBe(200);
        done();
      });
  });

  it('회원가입 탈퇴', (done) => {
    request(app)
      .delete('/user')
      .set('Authorization', token1)
      .then((res) => {
        expect(res.status).toBe(200);
        done();
      });
  });
});

describe('로그인', () => {
  it('로그인', (done) => {
    request(app)
      .post('/user/login')
      .send({
        email: 'test123123@test.com',
        password: '12341234',
      })
      .then((res) => {
        expect(res.status).toBe(200);
        done();
      });
  });
});

describe('마이프로필', () => {
  it('마이프로필 조회', (done) => {
    request(app)
      .get('/user/myprofile')
      .set('Authorization', token)
      .then((res) => {
        expect(res.status).toBe(200);
        done();
      });
  });

  it('마이프로필 수정', (done) => {
    request(app)
      .patch('/user/myprofile')
      .set('Authorization', token)
      .send({
        nickname: '공이크다',
        introduction: '나좀 살려줘',
      })
      .then((res) => {
        expect(res.status).toBe(200);
        done();
      });
  });
});

describe('이메일 인증', () => {
  it('이메일 인증', (done) => {
    request(app)
      .post('/user/emailauth')
      .set('Authorization', token)
      .send({ email: 'mna800@naver.com' })
      .then((res) => {
        expect(res.status).toBe(200);
        done();
      });
  });

  it('비밀 번호 재설정', (done) => {
    request(app)
      .patch('/user/change-password')
      .set('Authorization', token)
      .send({ password: '123456789' })
      .then((res) => {
        expect(res.status).toBe(200);
        done();
      });
  });
});

Mysql 이모지 넣는방법!!

{
        sequelize,
        timestamps: true,
        underscored: false,
        modelName: 'User',
        tableName: 'users',
        paranoid: false,
        
        // 이모지를 넣기 위한 셋팅!
        charset: 'utf8mb4',
        collate: ' utf8mb4_unicode_ci',
      }

  1. 내가 짠 API 로직을 간단하게 테스트하는 Supertest 코드를 작성해 보았다.
    오늘은 API 전부를 테스틑 한 것은 아니다. 그리고 실패했을 경우 등 다양한 test코드 작성을 이어 나갈 생각이다!
  2. 이모지를 넣기위해선 utf8만으로는 이모지를 넣을 수가 없었다.

1-1 jest코드 작성중

  • 닉네임 중복검사 test post()부분에서 에러발생!!! usr에는 문자열이 들어갈 수 없다는 오류!

  • 해결 방안 => ${encodeURI()}로 감싸주니 해결 완료!

2-1. utf8은, 가변 3byte까지밖에 넣지 못해요. 그러니, 캐릭터 셋이 utf8로 설정되었다면 이모지와 같은, 유니코드 값으로 U+FFFF가 넘어가는 문자에 대해서는 넣지 못한 다고 합니다.

2-2. utf8mb4_unicode_ci의 여러 업데이트 중 눈에 띄는 변화로 Emoji (이모지😁) 를 지원한다.

profile
코린이 열심히 배우자!

0개의 댓글