gitHub gitaction을 이용해서 자동 코드 테스팅(JEST) 하기

 해당 글은 NestJS(NodeJS)을 이용하여 작성되었다.

프로젝트 루트 경로에 ".github/workflows"폴더를 만든다. 




"workflows" 폴더 안에 git action에서 실행할 yaml파일을 만든다.

여기서는 test_workflow.yaml파일이다.


# 워크플로우의 이름을 정의합니다. GitHub Actions 로그와 UI에서 이 이름이 표시됩니다.
name: NestJS application test

# 이 워크플로우가 어떤 GitHub 이벤트에 의해 트리거될지 정의합니다.
# 여기서는 'push' 이벤트와 'pull_request' 이벤트에 대해 워크플로우가 실행됩니다.
on: [push, pull_request]

# 워크플로우에서 실행할 작업을 정의합니다.
jobs:
build:
# 워크플로우가 실행될 가상 환경을 지정합니다. 여기서는 Ubuntu 22.04를 사용합니다.
runs-on: ubuntu-22.04

# 워크플로우에서 실행할 단계들을 정의합니다.
steps:
- uses: actions/checkout@v2
# 첫 번째 단계: GitHub 리포지토리를 체크아웃합니다.
# 이는 워크플로우가 리포지토리의 코드에 접근할 수 있게 해줍니다.

- name: Set up Node.js
uses: actions/setup-node@v2
# 두 번째 단계: Node.js 환경을 설정합니다.
with:
node-version: '20.10.0'
# Node.js의 버전을 지정합니다.
# 이 예시에서는 '20.10.0' 버전을 사용합니다.

- name: Install dependencies
run: |
npm install
# 세 번째 단계: 프로젝트의 의존성을 설치합니다.
# 'npm install' 명령어를 사용하여 필요한 노드 모듈을 설치합니다.

- name: Run tests
run: |
npm test
# 네 번째 단계: 테스트를 실행합니다.
# 'npm test' 명령어를 사용하여 정의된 테스트 케이스를 실행합니다.


로컬에서 테스트 한 경우 아래처럼 결과가 나온다.




이 상태에서 gitHub에 푸시를 한다.




gitHub Repository에 가서 Actions부분을 확인하면 workflow를 볼수 있다.




해당 build에 들어가면 어떤식으로 진행했는지도 단계별로 확인할수 있다.




여기서 임의적으로 테스트가 실패하게 해보겠습니다. "app.controller.spec.ts"파일을 아래와 같이 수정해 줍니다.

// src/app.controller.spec.ts
import { Test, TestingModule } from '@nestjs/testing';
import { AppController } from './app.controller';
import { AppService } from './app.service';

describe('AppController', () => {
let appController: AppController;

beforeEach(async () => {
const app: TestingModule = await Test.createTestingModule({
controllers: [AppController],
providers: [AppService],
}).compile();

appController = app.get<AppController>(AppController);
});

describe('root', () => {
it('should return "Hello World!"', () => {
expect(appController.getHello()).toBe('Hello World!');
});

it('should fail the test', () => {
expect(true).toEqual(false); // test가 fail이 나는 조건을 건다.
});
});
});


이후 로컬에서 테스트 하면 아래와 같이 나타납니다.



이제 다른 브렌치(test_failed)를 통해서 gitHub에 푸시 하도록 하겠습니다.






위 두장의 사진처럼 테스트 하는 도중에 문제가 발생할시 위와같이 실패를 알려준다.



또한 해당 브렌치로 갈시 실패했다는 것을 빨간색 'X'로 표시해 준다.

만약 로컬에서 gitactions과 같은 테스트를 하고 싶으면 아래 링크를 참고해 주시기 바랍니다.

https://github.com/nektos/act


gitHub Link : https://github.com/Alex-Choi0/test_gitaction_testing_jest

댓글

이 블로그의 인기 게시물

Lesson 12_1 프로퍼티 노드(Property Node)

DAQ로 전압 측정하기-2

Lesson 12_2 참조를 이용한 프로퍼티노드(Property Node)