728x90
반응형
비동기 코드를 테스트를 할 경우 테스트 중인 코드의 완료 시점을 알아야 한다
Jest 에서는 여러 방법으로 비동기 코드의 테스트 완료 시점을 알 수 있다
promise
테스트에서 promise 를 반환하면 Jest 는 해당 promise 가 해결될 때까지 기다린다
fetching 되어야하는 response data 가 문자열 peanut butter 라고 가정하면
다음과 같이 코드를 작성할 수 있다
test('the data is peanut butter', () => {
return fetchData().then(data => {
expect(data).toBe('peanut butter');
});
});
async / await
테스트에서 async/await
문법을 사용할 수 있다
test('the data is peanut butter', async () => {
const data = await fetchData();
expect(data).toBe('peanut butter');
});
test('the fetch fails with an error', async () => {
expect.assertions(1);
try {
await fetchData();
} catch (e) {
expect(e).toMatch('error');
}
});
async/await
과 .resolves
, ..rejects
를 결합하여 사용할 수 있다
test('the data is peanut butter', async () => {
await expect(fetchData()).resolves.toBe('peanut butter');
});
test('the fetch fails with an error', async () => {
await expect(fetchData()).rejects.toMatch('error');
});
.resolves /.rejects
또한 expect 문에서 .resolves
매처를 사용할 수 있고
Jest는 해당 promise 가 해결될 때까지 기다린다
promise 가 reject 되면 테스트는 자동으로 실패
test('the data is peanut butter', () => {
return expect(fetchData()).resolves.toBe('peanut butter');
});
assertion 을 반환해야 한다
return 을 생략하면 fetchData() 가 완료되고 .then() 이 콜백을 실행하기 전에
테스트가 종료된다
promise 가 reject 될 것으로 예상되면 .reject
매처를 사용.resolves
매처 와 유사하게 동작한다
promise 가 resolve 되면 테스트는 자동으로 실패
반응형
댓글