[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 필드에 대한 테스트 케이스를 작성하였습니다. 각 테스트 케이스는 describe
와 it
을 사용하여 정의되었으며, expect
함수를 사용하여 테스트 결과를 확인합니다.
결론
GraphQL-js에서의 타입 기반 테스트 케이스를 작성하는 방법을 살펴보았습니다. 타입 기반 테스트 케이스를 작성하면 GraphQL 서버의 각 타입이 예상대로 동작하는지 확인할 수 있어 안정적인 서버를 구축하는 데 도움이 됩니다.
참고 문헌: