- 오늘은 Jest 코드 작성을 위해 Supertest lib를 이용했다.!
- 소셜로그인을 통해 가입된 닉네임이 이모티콘을 사용하는 사용자에게 Mysql을 수정 하여 이모티콘 저장도 가능하게함!
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();
});
});
});
{
sequelize,
timestamps: true,
underscored: false,
modelName: 'User',
tableName: 'users',
paranoid: false,
// 이모지를 넣기 위한 셋팅!
charset: 'utf8mb4',
collate: ' utf8mb4_unicode_ci',
}
- 내가 짠 API 로직을 간단하게 테스트하는 Supertest 코드를 작성해 보았다.
오늘은 API 전부를 테스틑 한 것은 아니다. 그리고 실패했을 경우 등 다양한 test코드 작성을 이어 나갈 생각이다!- 이모지를 넣기위해선 utf8만으로는 이모지를 넣을 수가 없었다.
1-1 jest코드 작성중
닉네임 중복검사 test post()부분에서 에러발생!!! usr에는 문자열이 들어갈 수 없다는 오류!
해결 방안 => ${encodeURI()}로 감싸주니 해결 완료!
2-1. utf8은, 가변 3byte까지밖에 넣지 못해요. 그러니, 캐릭터 셋이 utf8로 설정되었다면 이모지와 같은, 유니코드 값으로 U+FFFF가 넘어가는 문자에 대해서는 넣지 못한 다고 합니다.
2-2. utf8mb4_unicode_ci의 여러 업데이트 중 눈에 띄는 변화로 Emoji (이모지😁) 를 지원한다.