Я издеваюсь над поиском поиска Sequelize и затем изменяю результат перед возвратом объекта в Promise.resolve();Sinon sequelize stub - Измененный объект не возвращается с Promise.resolve()
Вот мой упрощенный код;
test.js
test('can pass test', t => {
let mock_instance = models.myModel.build({
a_property: 5
});
let Stub = sandbox.stub(models.myModel, 'find',() => {
return Promise.resolve(mock_instance);
});
models.myModel.functionCall(mock_instance.id).then(returned_object => {
let expected = {
a_property: 6
};
t.equal(returned_object.get({plain:true}), expected);
// Expected { a_property: 6 }
// Actual { a_property: 5 }
Stub.restore();
t.end();
});
})
model.js // Метод класса
classFunction: (id) => {
return new Promise((resolve, reject) => {
return sequelize.models.myModel.find({
where: {
id: id
}
}).then(mymodel => {
mymodel.a_property++;
resolve(mymodel);
}).catch(err => {
reject(err);
});
});
Почему это происходит? Я предполагаю, что это как-то связано с тем, что Синон перехватывает решение, думая, что это результат вызова find(), но я не уверен, и я не знаю, как его исправить.
Это анти-шаблон? Есть ли способ лучше?