У меня есть следующий код:
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.