Я создаю тестовую среду API и использую фейкер для создания поддельных пользователей для публикации в API.
Я тестирую две конечные точки, создаю пользователя и создаю напоминание, я отправляю данные в обе из них.
Чтобы создать пользователя, мне нужно опубликовать имя, адрес электронной почты и пароль на конечной точке пользователя, и я получу действительный JWT.
Чтобы создать напоминание, мне нужен действительный JWT, который я публикую в заголовке вызова создания напоминания.
У меня есть вспомогательная функция, которая создает для меня пользовательский json-объект, и я использую ее как в конечной точке создания пользователя, так и в конечной точке создания напоминания.
Если я запущу каждый тест отдельно, тест будет пройден. Однако, если я попытаюсь запустить полный набор тестов, моя проверка завершится ошибкой в конечной точке создания пользователя, потому что электронное письмо уже существует, оно было создано, когда я вызвал напоминание о создании (поскольку это также вызывает создание пользователя для получения действительного токена)
Вот мой тест для создания действительного пользователя -
const validUser = require('../data/userData/validUser');
describe('Functional Testing', () => {
describe('Users', () => {
it('It should create a user', async () => {
const response = await usersService.createUser(validUser);
expect(response.statusCode).to.equal(200);
expect(response.body).to.not.be.null;
expect(response.body).to.have.deep.property('token');
});
});
});
Вот тест напоминания о том, что пользователи используют пользовательский сервис для токена
context('Functional Testing', () => {
describe('Reminder', () => {
it.skip('It should create a reminder', async () => {
const createUserResponse = await user.createUser(validUser);
const token = createUserResponse.body.token;
const response = await reminderService.createReminder(
validReminder,
token
);
expect(response.statusCode).to.equal(201);
expect(response.body).to.have.deep.property('success');
expect(response.body).to.deep.include({ success: 'reminder created' });
});
А вот мой модуль, создающий пользователя -
const faker = require('faker');
module.exports = {
name: 'Test User',
email: `${faker.internet.email()}`,
password: '123123'
};
Я бы подумал, что независимо от этого модуль createUser всегда будет создавать мне случайное электронное письмо, но я думаю, что тесты могут работать слишком быстро, чтобы мошенник мог сгенерировать новое случайное электронное письмо?
Как заставить Faker всегда генерировать случайного пользователя?