NodeJS | Шут | Заводская девушка | Faker: Faker генерирует одинаковые значения - PullRequest
0 голосов
/ 04 апреля 2020

Я разрабатываю Node.js API, и сейчас я создаю тесты, используя supertest для всех маршрутов.

Я нашел лучшую практику использовать фабриканта и фейкер для генерации случайных значений для моделей.

Зная, что Я создал фабрику. js:

  import faker from 'faker/locale/pt_BR';
  import { factory } from 'factory-girl';

  import User from '../src/app/models/User';

  factory.define('User', User, {
    name: faker.name.findName(),
    email: faker.internet.email(),
    password: faker.internet.password(),
  });

  export default factory;

Работает прекрасно, когда я выполняю один раз:

  it('should be able to register', async () => {
    const user = await factory.attrs('User');

    const response = await request(app)
      .post('/users')
      .send(user);

    expect(response.body).toHaveProperty('id');
  });

Строка const user = await factory.attrs ('User'); возвращает следующую модель:

  {
    name: 'Sra. Dalila Pereira',
    email: 'Jlia68@bol.com.br',
    password: 'zhpMclO9KwWfhlt'
  }

Но если я вызову одну и ту же инструкцию два раза, модели будут равны:

  it('should return all users', async () => {
    const user1 = await factory.attrs('User');

    await request(app)
      .post('/users')
      .send(user1);

    const user2 = await factory.attrs('User');

    await request(app)
      .post('/users')
      .send(user2);

    const response = await request(app)
      .get('/users')
      .set('Authorization', `Bearer ${token}`);

    expect(response.status).toBe(200);
  });

Модель: пользователь1

   {
     name: 'Salvador Costa',
     email: 'Warley.Braga@hotmail.com',
     password: 'Q4EfvNJv9zulONR'
   }

Модель: пользователь2

   {
     name: 'Salvador Costa',
     email: 'Warley.Braga@hotmail.com',
     password: 'Q4EfvNJv9zulONR'
   }

Так когда второй пост вызывается ошибка, потому что пользователь уже существует.

Знаете ли вы, что я могу сделать, чтобы решить эту проблему?

Спасибо

...