Тестирование Nest.js Fastify TypeError: app.address не является функцией - PullRequest
0 голосов
/ 17 октября 2018

При выполнении тестов e2e в Nest.js с FastifyAdapter Я получаю следующую ошибку при выполнении тестов:

TypeError: app.address is not a function

  54 | 
  55 |     return request(app.getHttpServer())
> 56 |       .post('/authentication/register')
     |        ^
  57 |       .send(payload)
  58 |       .expect(400);
  59 |   });

Состав выглядит следующим образом:

   beforeAll(async () => {
    const module = await Test.createTestingModule({
      imports: [AuthenticationModule],
    })
      .overrideProvider(UserRepository)
      .useValue(userRepository)
      .compile();

    app = module.createNestApplication(new FastifyAdapter());
    await app.init();
  });

  it(`/POST register - should succeed for valid info`, () => {
    const payload = { email: 'johnson@gmail.com', password: '1234' };

    return request(app.getHttpServer())
      .post('/authentication/register')
      .send(payload)
      .expect({})
      .expect(201);
  });

Когда не используется FastifyAdapter , такой ошибки нет.Причина использования адаптера кроется в плагине fastify-cookie , который позволяет манипулировать файлами cookie с помощью запросов.

Просто хочу отметить, что для этой демонстрации я использовал плагин cookie в перед тем, как все что было бы:

const fastifyAdapter = new FastifyAdapter();
fastifyAdapter.register(fastifyCookie);

1 Ответ

0 голосов
/ 18 октября 2018

Я пропустил документацию по тестированию Nest.js для fastify, которую можно найти в исходном коде Nest.js, но нет в документации по сайту.При использовании fastify нам нужно использовать методы тестирования ИТ-специалистов из их документов.Следующий пример работает правильно:

beforeAll(async () => {
    const fastifyAdapter = new FastifyAdapter();
    fastifyAdapter.register(fastifyCookie);

    const module = await Test.createTestingModule({
      imports: [AuthenticationModule],
    })
      .overrideProvider(UserRepository)
      .useValue(userRepository)
      .compile();

    app = module.createNestApplication(fastifyAdapter);
    await app.init();
});

it(`/POST register - should succeed for valid info`, () => {
    return app
      .inject({
        method:  'POST',
        url:     '/authentication/register',
        payload: { email: 'johnson@gmail.com', password: '1234' },
      })
      .then(({ statusCode, payload }) => {
        expect(payload).toEqual('');
        expect(statusCode).toEqual(201);
      });
});

afterAll(async () => {
    await app.close();
});
...