#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 работает, и если это так, то с вашим тестированием может быть что-то не так. Если это так, пожалуйста, обновите свой вопрос, чтобы кто-то мог вам помочь.