초보자를 위한 Jest 튜토리얼: Jest Matchers [2/4]
5006 단어 webdevjavascriptjestbeginners
소개
Jest는 "매처"를 사용하여 다양한 방식으로 값을 테스트할 수 있습니다.
이 부분에 있는 대부분의 정보는 Jest docs에서 가져온 것입니다.
공통 매처
값을 테스트하는 가장 간단한 방법은 정확히 일치하는 것입니다.
test('two plus two is four', () => {
expect(2 + 2).toBe(4);
});
이 코드에서 expect(2 + 2)는 "기대"객체를 반환합니다. 일반적으로 일치자를 호출하는 것을 제외하고는 이러한 예상 객체로 많은 작업을 수행하지 않습니다. 이 코드에서 .toBe(4)는 매처입니다. Jest가 실행되면 실패한 매처를 모두 추적하여 멋진 오류 메시지를 출력할 수 있습니다.
toBe
에서는 Object를 사용하여 정확한 동일성을 테스트합니다. 객체의 값을 확인하려면 대신 toEqual
를 사용하십시오.test('object assignment', () => {
const data = {one: 1};
data['two'] = 2;
expect(data).toEqual({one: 1, two: 2});
});
toEqual
객체 또는 배열의 모든 필드를 재귀적으로 확인합니다.매처의 반대를 테스트할 수도 있습니다.
test('adding positive numbers is not zero', () => {
for (let a = 1; a < 10; a++) {
for (let b = 1; b < 10; b++) {
expect(a + b).not.toBe(0);
}
}
});
1. 진실성
테스트에서 때때로 undefined, null 및 false를 구분해야 합니다. Jest에는 원하는 것을 명시할 수 있는 도우미가 포함되어 있습니다.
toBeNull
null만 일치함toBeUndefined
정의되지 않은 항목만 일치toBeDefined
는 toBeUndefined
의 반대입니다.toBeTruthy
if 문이 true로 취급하는 모든 것과 일치합니다toBeFalsy
if 문이 거짓으로 취급하는 모든 것과 일치합니다.예를 들어:
test('null', () => {
const n = null;
expect(n).toBeNull();
expect(n).toBeDefined();
expect(n).not.toBeUndefined();
expect(n).not.toBeTruthy();
expect(n).toBeFalsy();
});
test('zero', () => {
const z = 0;
expect(z).not.toBeNull();
expect(z).toBeDefined();
expect(z).not.toBeUndefined();
expect(z).not.toBeTruthy();
expect(z).toBeFalsy();
});
참고: 코드에서 수행하려는 작업과 가장 정확하게 일치하는 매처를 사용하십시오.
2. 숫자
jest는 숫자를 비교하기 위해 다양한 매처를 제공합니다.
예시:
test('two plus two', () => {
const value = 2 + 2;
expect(value).toBeGreaterThan(3);
expect(value).toBeGreaterThanOrEqual(3.5);
expect(value).toBeLessThan(5);
expect(value).toBeLessThanOrEqual(4.5);
// toBe and toEqual are equivalent for numbers
expect(value).toBe(4);
expect(value).toEqual(4);
});
테스트가 작은 반올림 오류to understand this error click here에 의존하는 것을 원하지 않기 때문에 부동 소수점 동등성을 위해
toBeCloseTo
대신 toEqual
를 사용합니다.test('adding floating point numbers', () => {
const value = 0.1 + 0.2;
//expect(value).toBe(0.3); This won't work because of rounding error
expect(value).toBeCloseTo(0.3); // This works.
});
2. 문자열
jest는
toMatch
를 사용하여 정규식에 대해 문자열을 검사하는 기능을 제공합니다.test('there is no I in team', () => {
expect('team').not.toMatch(/I/);
});
test('but there is a "stop" in Christoph', () => {
expect('Christoph').toMatch(/stop/);
});
3. 배열과 이터러블
toContain
를 사용하여 배열이나 이터러블에 특정 항목이 포함되어 있는지 확인할 수 있습니다.const shoppingList = [
'diapers',
'kleenex',
'trash bags',
'paper towels',
'milk',
];
test('the shopping list has milk on it', () => {
expect(shoppingList).toContain('milk');
expect(new Set(shoppingList)).toContain('milk');
});
4. 예외
특정 함수가 호출될 때 오류가 발생하는지 여부를 테스트하려는 경우 jest는 일치자를 제공합니다
toThrow
.function compileAndroidCode() {
throw new Error('you are using the wrong JDK');
}
test('compiling android goes as expected', () => {
expect(() => compileAndroidCode()).toThrow();
expect(() => compileAndroidCode()).toThrow(Error);
// You can also use the exact error message or a regexp
expect(() => compileAndroidCode()).toThrow('you are using the wrong JDK');
expect(() => compileAndroidCode()).toThrow(/JDK/);
});
참고: 예외를 발생시키는 함수는 래핑 함수 내에서 호출해야 합니다. 그렇지 않으면
toThrow
어설션이 실패합니다.새로운 개념을 탐구하고 다른 사람들과 공유하는 것이 저의 열정이며 사람들을 돕고 영감을 주는 것이 저에게 기쁨입니다. 질문이 있으시면 언제든지 문의해 주세요!
, 및 GitHub에 연결
모든 사람이 개선할 여지가 있다는 것을 알고 있으므로 귀하의 제안에 감사드립니다. 그리고 새로운 것을 알고 싶습니다(❤️).
Reference
이 문제에 관하여(초보자를 위한 Jest 튜토리얼: Jest Matchers [2/4]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/abidullah786/jest-tutorial-for-beginners-jest-matchers-25-5fh9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)