Как выполнить тест e2e в nestjs с использованием макетных данных

#javascript #node.js #jestjs #nestjs #e2e-testing

#javascript #node.js #jestjs #nestjs #e2e-тестирование

Вопрос:

У меня есть api в контроллере nestjs.
Сначала он проверяет, есть ли информация о центре или нет.
После этого он создает клиента.

   @Post('/client')
  public async createClient(
    @Body() createClientDto: CreateClientDto,
    @Req() req,
    @Res() res,
  ) {
    const { centerId } = createClientDto;

    let center = null;
    try {
      center = await this.centersReadService.findCenter(centerId);
    } catch (err) {
      throw new HttpException(
        {
          errorLog: err.message,
        },
        500,
      );
    }
    if (!center) {
      throw new HttpException(
        {
           popup: 'There is no center"
        },
        500,
      );
    }
    
    await this.clientCreateService.createClient(createClientDto)
    return res.json({})
  }
 

Я сделал тест e2e об этом api.
Он выполняется в «docker-compose», поэтому это приложение-тест выполняется на localhost: 20000.
Я надеюсь, что он не запускает новое приложение с новым портом.
В этом тесте я хочу получить ‘center = null’ методом findCenter независимо от ‘centerId’ из ‘createClientDto’.
Возможно ли, что некоторые методы возвращают фиксированное значение с помощью теста e2e?

 import { INestApplication } from '@nestjs/common';
import * as request from 'supertest';
import { t_CreateClientDto } from './mock-data';

describe('Masters Clients Post (e2e)', () => {
  let app: INestApplication;
  const testUrl = 'http://localhost:20000';

  it('can't create a client since there is no center.', () => {
    return request(testUrl)
      .post('/users/v1/masters/client')
      .send(t_CreateClientDto)
      .expect('Content-Type', /json/)
      .expect((res) => {
        expect(res.body.popup).toBe('There is no center');
      })
      .expect(500);
  });
});
 

Комментарии:

1. Почему не cypress?

2. Как вы начинаете свой тест? Если вы запустите docker compose отдельно, вы сможете убедиться, что API работает, и если это так, то с вашим тестированием может быть что-то не так. Если это так, пожалуйста, обновите свой вопрос, чтобы кто-то мог вам помочь.