inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

통합테스트 질문

170

이태희

작성한 질문수 18

0

통합테스트 회원가입 로그인 하고 있는데요

맨 마지막에 아래 코드를 넣어도 계속 오류가 발생합니다. 

afterAll(async () => {
    await sequelize.sync({ force: true });
});

[오류내용]

  ● POST /join › 이미 로그인 했으면 redirect /

    expected "Location" of "/?error=%EB%A1%9C%EA%B7%B8%EC%9D%B8%20%ED%95%9C%20%EC%83%81%ED%83%9C%EC%9E%85%EB%8B%88%EB%8B%A4.", got "/error=%EB%A1%9C%EA%B7%B8%EC%9D%B8%ED%95%9C%20%EC%83%81%ED%83%9C%EC%9E%85%EB%8B%88%EB%8B%A4."

      43 |                 password: 'nodejsbook',
      44 |             })
    > 45 |             .expect('Location', `/?error=${message}`)
         |              ^
      46 |             .expect(302, done);
      47 |     });
      48 |

      at Object.<anonymous> (routes/auth.test.js:45:14)

[원본소스는 아래와 같습니다.]

.expect('Location', `/?error=${message}`);  이부분 주석 해제를 하면 오류가 발생합니다. 왜 그런건가요?

const request = require('supertest');
const { sequelize } = require('../models');
const app = require('../app');

beforeAll(async () => {
    await sequelize.sync();
});

describe('POST /join', () => {
    test('로그인 안 했으면 가입', (done) => {
        request(app)
            .post('/auth/join')
            .send({
                email: 'zerohch0@gmail.com',
                nick: 'zerocho',
                password: 'nodejsbook',
            })
            .expect('Location', '/')
            .expect(302, done);
    });
});

describe('POST /join', () => {
    const agent = request.agent(app);
    beforeEach((done) => {
        agent
            .post('/auth/login')
            .send({
                email: 'zerohch0@gmail.com',
                password: 'nodejsbook',
            })
            .end(done);
    });

    test('이미 로그인 했으면 redirect /', (done) => {
        const message = encodeURIComponent('로그인 한 상태입니다.');

        agent
        .post('/auth/join')
            .send({
                email: 'zerohch1@gmail.com',
                nick: 'zerocho1',
                password: 'nodejsbook',
            })
            .expect('Location', `/?error=${message}`)
            .expect(302, done);
    });

});

afterAll(async () => {
    await sequelize.sync({ force: true });
});

mysql mongodb nodejs Sequelize

답변 1

0

제로초(조현영)

decodeURI('%EB%A1%9C%EA%B7%B8%EC%9D%B8%20%ED%95%9C%20%EC%83%81%ED%83%9C%EC%9E%85%EB%8B%88%EB%8B%A4.", got "/error=%EB%A1%9C%EA%B7%B8%EC%9D%B8%ED%95%9C%20%EC%83%81%ED%83%9C%EC%9E%85%EB%8B%88%EB%8B%A4')

"로그인 한 상태입니다.", got "/error=로그인한 상태입니다"

띄어쓰기 때문이네요.

0

이태희

답변 주신것처럼

"로그인 한 상태입니다."에서 "로그인한 상태입니다,"로 변경해도 똑같이 에러가 발생합니다.

test('이미 로그인 했으면 redirect /', (done) => {
        const message = encodeURIComponent('로그인한 상태입니다.');
        agent
        .post('/auth/join')
        .send({
            email: 'zerohch0@gmail.com',
            nick: 'zerocho1',
            password: 'nodejsbook',
        })
        .expect('Location', `/?error=${message}`)
        .expect(302, done);
    });

0

huk

저도 동일한 내용의 에러가 납니다.

띄워쓰기를 하지 않아도 에러가 나네요

혹시 해당 에러 잡으셨나요?

아래 해당 줄을 없애면 에러가 나지 않습니다.

.expect('Location' , `/?error=${message}`)

0

제로초(조현영)

에러나는 걸 마찬가지로 저처럼 decodeURIComponent 해보세요. 그럼 한글이 보입니다.

리눅스 노드 설치시 패키지

0

159

0

socket.js 에서 referer로부터 roomId를 가져올 때

0

905

3

스트리밍 방식으로 대용량 파일 업로드 & 다운로드 관련 질문

0

2281

2

a[title] 질문드립니다

0

375

1

리뉴얼 강의 및 공부 방법

0

581

1

jwt decode

0

1128

1

node.js 교과서 3판 질문드립니다

0

391

1

passport와 jwt

0

432

1

리뉴얼 강의

0

417

2

혹시 Node.js 교과서 3판 이북은 언제 나오나요?

0

353

1

몽고디비 사용자도 MYSQL부분을 들어야 하나요???

0

481

1

sql 쿼리 로그는 어떤 모듈이 작성하나요?

0

505

2

nunjucks res.render('error'); 작동을 안합니다.

0

511

1

질문있습니다.

0

346

1

multer 한글 파일 업로드시 파일명이 깨져요.

1

3535

1

수업자료는 어디있나요?

0

366

1

질문 있습니디

0

235

1

multer 사용시 file 외 name값은 못받나용?

0

416

1

코드 중복 부분 질문드립니다.

0

298

1

api 만드는 이유 질문드립니다.

0

286

1

Strategy의 done에 대해 질문드립니다.

0

362

1

안녕하세요 fs 권한 관련 질문드립니다

0

447

1

시퀄라이즈 연결질문...

0

493

2

res.setHeader vs res.cookie

0

1785

3