1. 개요

  • 책을 읽다보니, 내가 개발하는 모든 프로젝트에 유닛 테스팅 환경이 필요하다는 생각이 든다
  • 요즘 주로 사용하는 언어인 Python, Javascript는 완벽한 환경이 준비되어 있다
  • Google Apps Script 는 위와 같은 단일 개발환경이 아닌 특이한 개발환경이다.
    • Google Apps Script는 여러가지 방법으로 개발할 수 있지만,
    • 현재 나는 아래 환경으로 개발중이다.
      • clasp(로컬,개발) + Typescript(로컬,개발) + GAS Online(온라인,실행)
    • 어차피 Google Drive의 온라인 서비스를 이용하기 위해 GAS를 사용하는 것이므로
      • 이중 GAS Online은 필수이다
  • GAS는 Javascript base 이지만 위의 수많은 제품들이
    • 터미널 실행환경인 node.js 기반으로 하므로 그대로 적용하기는 어렵다
  • 별도의 방법을 찾아야 한다

2. 전개

  • 제목의 미션에는 다음과 같은 challenge들이 있다
    • node.js를 사용하지 않고 GAS 환경으로 unit-testing framework을 가져올 수 있는가 ?
    • GAS Online 환경에서, 테스트를 어떻게 실행하고, 실행 결과를 어떻게 표현할 것인가 ?
    • 지원하는 테스트가 GAS Online 환경에서 테스트 용도로 사용하기 적합한가 ?

GasT

테스트 프레임웍 모듈 가져오기

  • 테스트 프레임웍은 GAS의 URL Fetch Service 를 이용하여 바로 가져온다.
    • 이 feature는 node.js를 보완해서 나온 deno 와 비슷하다
      • 디노도 npm에서 다운로드 하는 대신 URL을 직접 참조한다는 것이 첫번째 feature 이다
  • Test 모듈을 별도 파일로 구성할 수 있다
    • 위의 URL Fetch 명령만 파일 상단에서 호출하면 된다

테스트 실행및 결과 표현

  • 테스트를 하고자 할 경우 위에서 별도 파일로 구성한 테스트 모듈로 이동후 테스트 함수를 실행한다
  • GAS Online 실행환경에서 실행로그에 텍스트로 결과를 뿌린다

테스트 작성 프로토콜

  • 테스트 작성 프로토콜은 TAP를 사용한다
    • TAP의 역사를 보면 알겠지만 IT계의 짧은 수명을 극복하고 오랫동안 살아남았다
    • 살아있다는 증거 : 이 링크 는 JavaScript용 테스트 프레임워크 목록인데 TAP의 지원 여부 항목이 있으며, 꽤많은 프레임웍이 지원중이다 ( 아직 살아있네..)
  • 테스트 작성 프로토콜이 아무래도 빈약한 것 같다
    • hook 비슷한 것이 있는지 찾아봤는데 안보인다

적용사례

QUnitGS2

테스트 프레임웍 모듈 가져오기

  • 두가지 방법이 있다
    1. github에 등록된 QunitGS2 는 그대로 GAS Project이다
      • 즉, 그대로 내 Apps Script 코드의 일부로 복사하면 사용할수 있다
    2. 아니면 라이브러리로 등록하는 방법이 있다.
      • 저자가 공개 GAS 프로젝트로 등록한 ID로 등록할수도 있고
      • 아니면 Github에서 다운로드받아 내 Apps Script 계정에 …
      • 별도 프로젝트로 등록한 후 라이브러리로 만들어도 된다.
  • 테스트 작성 모듈만 별도로 분리 가능한 것을 확인했다

테스트 실행및 결과 표현

  • 테스트 실행 방법이 다소 복잡하다
    1. 일단 유닛 테스트를 적용하려는 프로젝트를 Web Apps로 만든다
    2. doGet() 함수 추가후 배포를 해야 한다
      • Step-by-Step 매뉴얼에서는 테스트 코드로 배포하라고 나오지만 … 현재 테스트 코드로는 제대로 안된다 ( 내가 뭔가 잘못했을지도..?)
      • 정식 배포를 하면 잘 나온다
    3. 웹앱 배포 주소로 접속하면 아래와 유사하게 나온다 Qunit 결과
  • Qunit 홈페이지 에 가보면 Browser ResultCLI Result가 있는데 ..
    • QUnitGS2는 그 중 Browser Result를 활용하여 결과를 보여주는 프로젝트이다

테스트 작성 프로토콜

적용사례

gas-local

해당 주제와 관련된 글