정렬, 실행 및 패턴 주장: ​​단위 테스트의 세 가지 A

4318 단어 jesttestingjavascript
단위 테스트가 처음이라면 3A 패턴(Arrange-Act-Assert 또는 AAA)이 시작하기에 좋은 곳입니다. Arrange, Act 및 Assert는 모든 단위 테스트에 적용할 수 있는 간단한 패턴입니다.


이 문서는 https://robertmarshall.dev/blog/arrange-act-and-assert-pattern-the-three-as-of-unit-testing/에 처음 게시되었으며 최신 정보입니다.


Arrange, Act 및 Assert 패턴이란 무엇입니까?



Arrange, Act 및 Assert 패턴은 읽고 이해하기 쉽도록 단위 테스트를 구성하는 방법입니다. 이 패턴은 Given, When, Then 패턴이라고도 합니다. 세 개의 A로 가는 단계는 다음과 같습니다.

정렬: 테스트 조건을 설정합니다. 여기에는 객체 생성, 변수 설정 또는 테스트에 필요한 모든 것이 포함될 수 있습니다.

Act: 테스트 중인 코드를 실제로 실행하는 곳입니다.

*Assert: * 테스트 중인 코드가 예상대로 작동하는지 확인합니다. 여기에는 변수 값을 확인하거나 특정 메서드가 호출되었는지 확인하는 작업이 포함될 수 있습니다.

Arrange, Act 및 Assert 패턴의 이점



Arrange, Act 및 Assert 패턴은 더 나은 단위 테스트를 작성하는 데 도움이 될 수 있습니다. 더 나은 단위 테스트를 작성하는 간단하면서도 효과적인 방법입니다. 테스트를 이 세 가지 단계로 나누면 테스트해야 할 항목을 보다 쉽게 ​​식별하고 테스트가 포괄적인지 확인할 수 있습니다. 단위 테스트에 AAA 패턴을 사용하면 몇 가지 이점이 있습니다.

테스트를 간결하고 집중적으로 유지하는 데 도움이 됩니다.



엄격한 구조를 따르면 테스트가 더 작고 단일 항목만 테스트할 때 테스트를 작성하기가 더 쉽습니다. 테스트는 하나의 결과만 '어설션'해야 합니다. 이런 식으로 테스트를 제한하면 모든 것이 더 관리하기 쉬워집니다.

테스트를 읽고 이해하기가 더 쉽습니다.



Arrange Act Assert 패턴을 따른다는 것은 테스트가 기능이 작동한다는 것을 증명할 뿐만 아니라 기능이나 구성 요소가 어떻게 작동하는지 보여 준다는 것을 의미합니다. 더 간결하기 때문에 하나의 인수 또는 환경 요소를 변경하여 특정 방식으로 수행함을 보여야 합니다. 이는 테스트를 통해 문서화되어 기능과 기능에 대한 안내를 제공해야 합니다.

디버깅이 더 쉬울 수 있습니다.



이 패턴은 각 테스트가 격리된 단위이기 때문에 디버깅 공정을 더 쉽게 만들 수 있습니다. 테스트 수행 방식을 변경하는 외부 요인이 없어야 합니다. 또한 각 테스트는 단일 결과에 초점을 맞추기 때문에 정확히 무엇이 문제인지 훨씬 쉽게 확인할 수 있습니다. 많은 소규모 테스트는 시간을 들일 가치가 없다는 주장이 있지만 이러한 방식으로 유틸리티 기능을 테스트하는 것이 도움이 될 수 있습니다. 팀 구성원은 시간이 지남에 따라 변경될 수 있으며 의도하지 않은 기능을 실수로 중단할 수 있습니다. 단위 테스트는 이러한 작은 실수를 잡아낼 수 있습니다.

Arrange, Act 및 Assert 패턴을 사용하는 방법



저는 Jest 단위 테스트에서 그리고 React Testing Library를 사용할 때 Arrange, Act 및 Assert 패턴을 사용합니다. 이 블로그에서는 Jest 테스트만 다루지만 동일한 패턴이 다른 상황에도 적용됩니다.

함수



이 기사를 위해 테스트할 기능은 매우 작습니다. 두 개의 인수(a 및 b)를 사용하여 함께 더한 다음 결과를 반환합니다.

const addTwoNumbers = (a, b) => a + b;


이것으로부터 우리는 함수가 변경될 수 있는 두 개의 인수를 취하고 변경할 수 있는 다른 변수가 없다는 것을 알고 있습니다. 이를 염두에 두고 우리는 '정리'해야 할 것이 무엇인지 압니다. 'act' 섹션은 변수를 함수에 전달하고 실행하며, 테스트는 예상 결과를 'assert'합니다.

시험




describe('addTwoNumbers', () => {
    test('1 and 2 make 3', () => {
        // Arrange
        const argA = 1;
        const argB = 2;
        const assert = 3;

        // Act
        const result = addTwoNumbers(argA, argB);

        // Assert
        expect(result).toBe(assert);
    });
});


그리고 그게 다야. 그러나 이 패턴은 훨씬 더 복잡한 기능에 사용될 수 있으므로 개발자는 무슨 일이 왜 일어나고 있는지에 집중해야 합니다.

Arrange-Act-Assert는 간단하기 때문에 강력합니다. 테스트를 짧고 간결하게 유지함으로써 깨끗한 테스트로 이어집니다. 작성하기 쉽고 디버그하기 쉬운 테스트!

좋은 웹페이지 즐겨찾기