Nest не может найти элемент GraphQLModule - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь написать e2e-тест для моего бэкэнд-приложения (гнездо js, grpahql, mongodb). Это мой тест:

import { INestApplication } from '@nestjs/common';
import { GraphQLModule } from '@nestjs/graphql';
import { Test, TestingModule } from '@nestjs/testing';
import {
  ApolloServerTestClient,
  createTestClient,
} from 'apollo-server-testing';
import gql from 'graphql-tag';
import { UserModule } from '../src/user/user.module';
import { MongooseModule } from '@nestjs/mongoose';
import config from '../src/environments/environment';

describe('User', () => {
  let app: INestApplication;
  let apolloClient: ApolloServerTestClient;

  beforeEach(async () => {
    const moduleFixture: TestingModule = await Test.createTestingModule({
      imports: [UserModule, MongooseModule.forRoot(config.mongoURI)],
    }).compile();

    app = moduleFixture.createNestApplication();
    await app.init();

    const module: GraphQLModule = moduleFixture.get<GraphQLModule>(
      GraphQLModule,
    );
    apolloClient = createTestClient((module as any).apolloServer);
  });

  it('should get users', async () => {
    const { query } = apolloClient;
    const result: any = await query({
      query: gql`
        query {
          getUsers {
            _id
            name
          }
        }
      `,
      variables: {},
    });
    console.log(result);
  });
});

Я сталкиваюсь с этой ошибкой:

Гнезду не удалось найти элемент GraphQLModule (этот поставщик не существует в текущем контексте)

Может ли кто-нибудь поделиться рабочим примером или указать мне, что не так?

1 Ответ

1 голос
/ 18 марта 2020

Похоже, GraphQLModule не импортируется в объем вашего TestModule. Если это так, контекст никогда не сможет предоставить его, используя get().

Кроме того, это может не помочь вам, но это то, что мы делаем в наших проектах:

  beforeAll(async () => {
    const TCP_PORT = 4242;
    const testingModule = await Test.createTestingModule({
      imports: [AppModule],
    }).compile();

    gqlClient = new ApolloClient({
      uri: `http://localhost:${TCP_PORT}/graphql`,
      fetch: fetch as any,
      cache: new InMemoryCache({
        addTypename: false,
      }),
    });

    app = testingModule.createNestApplication();
    await app.listen(TCP_PORT);
  });

I не добавлен весь импорт, но вот наиболее релевантные:

import ApolloClient, { gql, InMemoryCache } from 'apollo-boost';
import fetch from 'node-fetch';

Я предполагаю, что вы знаете другие и / или не нуждаетесь в них

...