inflearn logo
강의

Course

Instructor

NodeJS API Server Built with Test-Driven Development (TDD)

superTest(superTest) 2

슈퍼 테스트2 강의 질문입니다

450

yoonsik1313310

48 asked

0

 

describe('GET /users는', () => {
    it('user리스트를 limit만큼 가져왔다', (done) => {
        request(app)
            .get('/users')
            .end((err, res) => {
                console.log(res.body)
                done() // 우리가 만든 API서버는 비동기로 동작한다. 그래서 비동기에 대한 처리로 콜백함수를 호출해야 한다??
            })
    })
})

강사님께서 콜백함수 done()을 호출하는 부분에서 다음과 같이 말하셨습니다..."우리가 만든 API서버는 비동기로 동작한다. 그래서 비동기에 대한 처리를 해야한다"

그런데 done()이라는 콜백함수를 호출하는 것이 어떤의미에서 비동기에 대한 처린인지 이해가 가지않아 질문을 남깁니다.

node.js express tdd rest-api

Answer 1

0

jeonghwan

모카의 it 함수는 두번 째인자로 테스트할 로직을 함수 형태로 정의하게 되어있습니다.

it('테스트 설명', function 테스트_본문() {
  // 여기에 동기 로직을 테스트합니다.
  // 모카는 여기서 로직이 끝나는 것을 압니다. 테스트 종료 처리를 합니다.
});

이런 구조이죠. 동기 코드를 테스트한다면 그냥 순서대로 작성하면 됩니다.

반변 비동기 코드를 테스트한다면 언제 테스트할 코드가 완료되었는지 알 수 없을거에요.

it('테스트 설명', function 테스트_본문() {
  // 여기에 비동기 로직을 테스트합니다.
  // 모카는 로직이 언제 완료될지 아직 모릅니다. 
  // 예: api 서버가 1초 후일지 2초후일지 언제 응답할지 모르니깐. 
  // 모카에서 로직이 완료되었다는 것을 알려줄 방법이 필요합니다.
});

비동기 로직은 언제 완료될지 알수 없기 때문입니다. 예를 들어 api 서버를 테스트할 때 1초 후에 응답을 줄지 2초후에 응답을 줄지 모르기 때문입니다.

그래서 모카에게 '로직이 완료되었어' 라고 알려주 방법이 필요한데 그게 테스트_본문 함수의 done 인자입니다. 테스트 코드에서 done()을 호출하면 모카는 '아 이 로직이 완료되었구나'라고 판단하고 테스트 케이스가 실패인지 성공인지 판단할 수 있을 것입니다.

 

curl -X 매개변수를 찾을 수 없습니다

0

2161

1

라우터 클래스 질문입니다

0

444

1

응답 강의중 질문입니다

0

331

1

요청 형식 강의 질문입니다

0

431

1

비동기 세계1 강의 내용 질문입니다

0

494

2

오타로 인해 한참을 헤맸네요.

0

396

0

'NODE_ENV'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.

2

1474

1

img src부분과 require()에 대해 질문이요!

0

582

1

bulkCreate 사용법 질문 (해결)

0

391

1

api 분리 관련해서 질문 있습니다.

0

485

1

promise 가 넘어올 때 .then 사용법 문의

0

279

1

package-lock 파일은 어떤 용도일까요?

0

686

1

테스트 코드 실행이 안됩니다.

0

279

1

should실행시 mocha 사용하는이유는

0

326

1

expect를 걸었음에도 불구하고 확인하지 않는 이유가 무엇일까요?

0

366

0

안녕하세요. 강의 내용 중 질문있습니다.

0

366

1

에러가 납니다.

0

209

0

강의 중 describe POST 쪽 질문입니다.

0

229

1

객체 래핑

0

286

0

should가 어떻게 저기 나올 수 있죠?

0

357

2

강의자료 pdf 링크에 pdf를 다운받을 수 없는 상황인데 확인 부탁드립니다.

0

245

1

질문드립니다.

0

192

1

궁금해서 올립니다.

0

221

2

데이터베이스연동문제

0

363

3