인프런 커뮤니티 질문&답변

lch9502님의 프로필 이미지
lch9502

작성한 질문수

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

supertest 사용하기

expect 질문입니다.

해결된 질문

작성

·

332

1

안녕하세요 expect관련 함수에 대해서 질문이 있습니다.

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

위의 함수에서  expect들이 나타내는게

res.status(302).redirect(‘/’) 라는것은 알겠는데,

정확하게 이해를 못해서 질문을 드립니다.

expect함수는 expect(value) 형태로 사용하는거라고 알고있는데 인수를 2개씩 써도 상관이 없는건가요??
그리고 'location',  '/', '302'의 순서는 상관이 없나요?

답변 5

2

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

[] 부분은 옵션입니다.

공식문서에 나온 형식과 자리만 맞는다면 메서드 체이닝(.으로 메서드 연달아 쓰는 것)간에는 문제없습니다. 

1

lch9502님의 프로필 이미지
lch9502
질문자

supertest 공식문서를 읽어보다가 궁금증이 생겨서 한번 더 질문 드려요..

공식문서에 expect가 이런식으로 적혀있는데 여기서 [,fn] 이 의미하는 것은 펑션을 생략해도 되고 붙여도 된다는 의미로 이해해도 될까요?
실제로 코드를 

  test('로그인 수행', async (done) => {
    request(app)
      .post('/auth/login')
      .send({
        email: 'zerohch0@gmail.com',
        password: 'nodejsbook',
      })
      .expect(302)
      .expect('Location', '/', done);
  });

이런식으로 바꿔도 테스트에는 영향이 없던데 꼭 공식문서의 예시처럼 맞춰야하는 걸까요??

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

아아 jest의 expect 말씀하셨던거군요. supertest의 expect랑 다릅니다. 사용방법도 다르게 익히셔야 합니다

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

expect 메서드가 expect(value) 형태로 사용한다고 어디에 나와있나요?

expect는 expect(header, value) 또는 expect(statusCode, done)입니다.

location / 302 순서는 지키셔야 합니다.

0

lch9502님의 프로필 이미지
lch9502
질문자

test('1 + 1 은 2일겁니다.', () => {

    expect(1 + 1).toEqual(2);

});

 

이런 식으로  expect는 matcher함수와 같이 쓰는게 아닌가요??

혹시 모듈 자체를 jest랑 supertest랑 전혀 다르게 생각해서 안에 쓰이는 함수의 형태도 다른 것인가요??

lch9502님의 프로필 이미지
lch9502

작성한 질문수

질문하기