[typescript] GraphQL-js에서의 타입 기반 테스트 케이스 작성 방법

GraphQL-js는 GraphQL 쿼리 및 뮤테이션을 처리하기 위한 JavaScript 라이브러리입니다. 타입 기반 테스트 케이스를 작성하여 GraphQL 서버를 테스트하는 것은 매우 유용합니다. 이 포스트에서는 GraphQL-js에서의 타입 기반 테스트 케이스를 작성하는 방법에 대해 알아보겠습니다.

1. jest와 graphql-tag 라이브러리 설치

GraphQL-js에서의 타입 기반 테스트 케이스를 작성하려면 먼저 jest와 graphql-tag 라이브러리를 설치해야 합니다.

npm install jest graphql-tag --save-dev

2. 타입 기반 테스트 케이스 작성

다음으로, 타입 기반 테스트 케이스를 작성해봅시다. 예를 들어, “User”라는 GraphQL 타입에 대한 테스트를 작성해보겠습니다.

import { graphql, buildSchema } from 'graphql';
import { makeExecutableSchema } from 'graphql-tools';
import gql from 'graphql-tag';

// Schema 정의
const typeDefs = `
  type User {
    id: ID!
    name: String!
  }

  type Query {
    user(id: ID!): User
  }
`;

// Resolver 정의
const resolvers = {
  Query: {
    user: (parent, args, context, info) => {
      // User 타입의 Resolver 로직 작성
      // ...
    },
  },
};

// Schema 빌드
const schema = makeExecutableSchema({ typeDefs, resolvers });

// 테스트 케이스 작성
describe('User 타입', () => {
  it('id 필드는 ID 타입을 반환해야 함', async () => {
    const query = gql`
      query {
        user(id: "1") {
          id
        }
      }
    `;
    const { data, errors } = await graphql(schema, query);
    expect(data.user.id).toBe('1');
    expect(errors).toBeUndefined();
  });

  it('name 필드는 String 타입을 반환해야 함', async () => {
    const query = gql`
      query {
        user(id: "1") {
          name
        }
      }
    `;
    const { data, errors } = await graphql(schema, query);
    expect(typeof data.user.name).toBe('string');
    expect(errors).toBeUndefined();
  });
});

위의 예제에서는 User 타입의 id 필드와 name 필드에 대한 테스트 케이스를 작성하였습니다. 각 테스트 케이스는 describeit을 사용하여 정의되었으며, expect 함수를 사용하여 테스트 결과를 확인합니다.

결론

GraphQL-js에서의 타입 기반 테스트 케이스를 작성하는 방법을 살펴보았습니다. 타입 기반 테스트 케이스를 작성하면 GraphQL 서버의 각 타입이 예상대로 동작하는지 확인할 수 있어 안정적인 서버를 구축하는 데 도움이 됩니다.

참고 문헌: