Модульное тестирование экземпляра Sequelize Model - PullRequest
0 голосов
/ 31 октября 2018

У меня есть следующий код:

async save(id: string) {
 const person = await PersonModel.findOne({
  where: { id: id },
 });

 if (!person) {
  await PersonModel.create({
    id: '2345',
    name: 'John Doe',
    age: 25
  });
  return;
 }

 await person.increment({ age: 15 });
}

Теперь я хотел протестировать person.increment (), в котором возраст будет добавлен с 15. У меня есть следующий код, чтобы избежать условия, которое создаст новую запись для модели.

const findOneFake = sinon.spy(() => {
  return {}; //returns empty object or true
});

const proxy = (proxyquire('./path/to/file.ts', {
  './path/to/PersonModel.ts': {
    default: {
      findOne: findOneFake
    }
  }
})).default;

beforeEach(async () => {
  await save();
});

it('should increment age with 15');

Как я собираюсь это сделать? Что мне сделать, чтобы проверить это? Я могу использовать sinon.fake () для PersonModel.create или PersonModel.update, но у меня проблемы с тестированием экземпляра Sequelize Model.

...