Jest 단위 테스트를 반복하는 방법
10202 단어 javascriptjest
때로는 Jest 단위 테스트를 작성할 때 다른 사례를 빠르게 테스트하기 위해 항목을 반복할 수 있기를 원할 것입니다. 항목 배열을 반복하거나 Jest 테스트에서 숫자 사이를 세는 것입니다. 이렇게 하면 Jest 테스트 스위트가 대폭 간소화됩니다.
이를 수행하는 방법에는 여러 가지가 있습니다. 이 게시물은 내가 과거에 Jest 테스트를 반복했던 방법을 간략하게 설명하는 것을 목표로 합니다.
Jest.Each로 테스트 반복
매우 기본적인 반복 Jest 테스트의 경우
jest.each
를 사용합니다. 다른 데이터로 동일한 테스트를 계속 복제할 수 있습니다. 테스트를 한 번 작성하고 데이터가 작동하도록 할 수 있습니다.기본 배열 및 printf 사용
이에 대한 예는 다음과 같습니다.
test.each([
[1, 1, 2],
[1, 2, 3],
[2, 1, 3],
])('.add(%i, %i)', (a, b, expected) => {
expect(a + b).toBe(expected);
});
위의 코드는 배열 내의 데이터 집합, 텍스트에 매개 변수를 삽입하기 위해 printf를 사용하는 테스트 이름 및 테스트 자체에 전달될 인수를 가져옵니다.
jest.each
에 대한 자세한 내용은 Jest documentation을 참조하십시오.객체 배열 사용
printf를 사용하는 대신 객체 배열을 전달하고 문자열 리터럴을 사용하여 참조할 수 있습니다. 이렇게:
test.each([
{a: 1, b: 1, expected: 2},
{a: 1, b: 2, expected: 3},
{a: 2, b: 1, expected: 3},
])('.add($a, $b)', ({a, b, expected}) => {
expect(a + b).toBe(expected);
});
나는 개인적으로 이것을 선호합니다. 각 항목이 무엇인지 더 명확하고 더 복잡한 테스트 데이터 세트를 구축할 수 있습니다.
Jest.Each를 테이블과 함께 사용하기
jest.each
API를 사용하면 보다 '시각적'인 방식으로 데이터를 전달할 수도 있습니다. 하나의 큰 문자열 리터럴을 사용하여 테이블의 데이터를 형성할 수 있습니다.이것은 다음과 같습니다.
test.each`
a | b | expected
${1} | ${1} | ${2}
${1} | ${2} | ${3}
${2} | ${1} | ${3}
`('returns $expected when $a is added $b', ({a, b, expected}) => {
expect(a + b).toBe(expected);
});
첫 번째 행은 테이블 제목을 설정하고 나머지 행은 템플릿 리터럴을 사용하여 값을 추가합니다. 그런 다음 템플릿 리터럴을 사용하여 테스트 제목 자체에서 데이터를 문자열에 주입합니다.
내 최고의 선택은 아니지만 일부 사람들은 이러한 테스트 처리 방식을 좋아합니다.
Jest 테스트에서 For 루프 사용
for 루프는 Jest 테스트를 동적으로 반복하고 싶을 때 사용합니다. jest에서 루프를 작성하는 이 방법에서는 printf 변수 주입이 필요하지 않습니다. 나를 구식(또는 잘못된)이라고 부르지만 테스트를 완전히 제어할 수 있는 유연성과 테스트 생성 방법도 좋아합니다.
예를 들어
for
루프 방식을 사용하면 내부 단위 테스트뿐만 아니라 테스트 블록을 루프describe
할 수 있습니다. 그러나 이러한 자유에는 자신을 제한할 필요가 있습니다. 그렇지 않으면 테스트가 과도하게 설계되어 너무 혼란스러워질 수 있습니다.간단한 테스트가 더 좋습니다.
const testData = [
{ a: 1, b: 1, expected: 2 },
{ a: 1, b: 2, expected: 3 },
{ a: 2, b: 1, expected: 3 }
];
for (let i = 0; i < testData.length; i += 1) { it(`.add(${testData[i].a}, ${testData[i].b})`, () => {
expect(testData[i].a + testData[i].b).toBe(testData[i].expected);
});
}
위는 동적으로 생성된 Jest 테스트를 생성하기 위해 for 루프를 사용하는 방법을 보여줍니다. 그러나 드물게 사용해야 하며
jest.each
는 대부분의 상황을 처리할 수 있습니다. for
루프는 복잡한 상황에 더 적합합니다.더 많은 Jest 힌트와 팁을 보려면 Jest Testing Category을 살펴보십시오!
이 정보가 도움이 되었길 바라며 질문이 있는 경우 다음 주소로 저에게 연락할 수 있습니다.
Reference
이 문제에 관하여(Jest 단위 테스트를 반복하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/robmarshall/how-to-loop-in-jest-unit-tests-3hb2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)