фабричная девушка с фальшивомонетчиком генерируют те же данные в узле экспресс

Я пытаюсь, чтобы фабричная девушка генерировала тестовые данные:

import { factory } from "factory-girl";
import faker from "faker";

export const adminDef = (factory: Static) =>
  factory.define('User', User, {
    email: internet.email(),
    password: internet.password(),
    firstName: name.firstName(),
    lastName: name.lastName(),
    phoneNumber: phone.phoneNumber(),
    role: UserRole.ADMIN
  });

Проблема, с которой я сталкиваюсь, заключается в том, что каждый раз, когда я дважды звоню factory.create("User"). Он пытается создать те же user данные. Вместо создания разных объектов. В рельсах вы можете просто обернуть фейкер { }. Как мне это сделать в узле?


person leogoesger    schedule 19.11.2018    source источник
comment
каково ваше определение для ваших заводских атрибутов? Например, internet.email(), какова его реализация? Как правило, я бы рекомендовал использовать фейкер — npmjs.com/package/Faker для создания фальшивых данных в NodeJS.   -  person Pruthvi Kumar    schedule 19.11.2018
comment
который использует фейкер. Я просто импортировал интернет из фейкера, вместо того, чтобы импортировать faker целиком.   -  person leogoesger    schedule 19.11.2018


Ответы (1)


При определении определения как функции это сработало! Не уверен, где найти это в документе.

export const adminDef = (factory: Static) =>
  factory.define('User', User, () => ({
    email: internet.email(),
    password: internet.password(),
    firstName: name.firstName(),
    lastName: name.lastName(),
    phoneNumber: phone.phoneNumber(),
    role: UserRole.ADMIN
  }));
person leogoesger    schedule 19.11.2018
comment
@PruthviKumar Нет, третий аргумент factory.define - это функция, а не объект. - person pjo336; 23.03.2019
comment
Очень умно, чувак. 101% - person glinda93; 24.12.2020