자바스크립트 테스트 시작하기

소프트웨어 엔지니어로서 문제를 해결하는 코드를 작성하고 문제를 올바르게 해결하는지 확인하는 것이 우리의 임무입니다. 테스트는 우리가 작성한 소프트웨어가 의도한 대로 작동하는지 확인하는 데 도움이 됩니다. 단위 테스트는 주어진 값 집합에 대한 정확성을 확인하는 코드 조각에서 수행할 수 있는 가장 기본적인 테스트 유형입니다.

단위 테스트의 일반적인 구조



단위 테스트는 일반적으로 3가지로 구성됩니다.
  • 테스트해야 하는 단위(코드 블록 또는 함수)
  • 테스트해야 하는 장치에 대한 입력
  • 지정된 입력에 대한 예상 출력



  • 미니 테스트 라이브러리를 구축해 봅시다



    화씨에서 섭씨로 온도를 변환할 수 있는 작은 함수를 만들어 봅시다. 함수 구축을 시작하기 전에 함수에 대한 몇 가지 가능한 테스트 사례를 생각할 수 있습니다.
  • 0을 입력하면 -17.77777777777778이 출력되어야 합니다
  • .
  • 5의 입력은 -15의 출력을 반환해야 합니다
  • .
  • -4의 입력은 -20의 출력을 반환해야 합니다
  • .

    기능을 실제로 구현하기 전에 테스트를 빌드하고 작성하는 이 프로세스를 TDD(Test-Driven Development)라고 합니다.

    function ftoc(f) {
      return f - 32 * 5/9;
    }
    

    단위 테스트의 구조를 살펴보면 테스트 작업을 추상화하는 데 도움이 되는 몇 가지 유틸리티 함수를 작성해 보겠습니다.

    function expect(result) {
      return {
        toBe: function(expected) {
          if (result !== expected) {
            throw new Error(`Expected ${expected}, but got ${result}`)
          }
        }
      }
    }
    
    function it(description, fn) {
      try {
        fn();
        console.log(`✅ ${description}`)
      } catch (error) {
        console.log(`❌ ${description}: ${error}`)
      }
    }
    
    it("Convert 0F to Celcius", function() {
      expect(ftoc(0)).toBe(-17.77777777777778)
    })
    it("Convert Positive Temparaterue to Celcius", function() {
      expect(ftoc(5)).toBe(-15)
    })
    it("Convert Negative Temparature to Celcius", function() {
      expect(ftoc(-4)).toBe(-20)
    })
    

    위의 코드를 실행하면 다음과 같은 출력이 생성됩니다.



    이는 우리의 변환 기능이 한 경우에만 작동하고 다른 두 경우에는 실패함을 보여줍니다. 함수를 수정하려면 변환 함수를 수정하기 위해 괄호 세트를 포함하도록 함수를 업데이트하십시오.

    function ftoc(f) {
      return (f - 32) * 5/9;
    }
    

    테스트를 다시 실행하면 다음과 같은 결과가 나타납니다.



    결론



    글쎄요, 쉬웠죠? 우리는 우리가 작성하는 모든 코드를 테스트하는 데 사용할 수 있는 몇 줄의 코드로 간단한 테스트 라이브러리를 구축했습니다. 생산에 사용할 수 있는 것과는 거리가 멀지만 주요 아이디어와 구조는 그대로 유지됩니다. 프로덕션 환경에서 사용하기에 더 적합한 정확한 줄 번호 및 스택 추적과 함께 실패한 테스트에 대한 자세한 설명과 같은 고급 기능을 제공하는 Jest, Mocha 등과 같이 인기 있고 기능이 풍부한 테스트 프레임워크가 많이 있습니다.

    의견에 대한 귀하의 견해와 피드백을 듣고 싶습니다. 당신은 또한 나를 때릴 수 있습니다.

    좋은 웹페이지 즐겨찾기