Привет!
Использую пишу модульные тесты для резолверов
GraphQl, к БД подключаюсь с помощью
Sequelize, тесты пишу с помощью
Jest.
Как написать тест для резольвера с промисом ?
resolver…
updateUser(root, { id, input }) {
return models.UserModel.findById(id) // Ищем User в БД по ID
.then(user => user.update(input)); // Добавляем объект с новыми значениями
}
…
Мой тест:…
it('update User', () => {
return Mutation.updateUser(null, {
currentId, // currentId = текущий ID юзера
input: {
login: 'T-Jane',
homeFloor: 2,
avatarUrl: 'http://pic.com/2',
},
})
.then((result) => {
return console.log(result);
});
});
…
Ошибка которую я получаю в консоли:TypeError: Cannot read property 'update' of null
7 | updateUser(root, { id, input }) {
8 | return models.UserModel.findById(id)
> 9 | .then(user => user.update(input));
10 | },
11 | removeUser(root, { id }) {
12 | return models.UserModel.findById(id)
at models.UserModel.findById.then.user (graphql/resolvers/mutation.js:9:23)
at tryCatcher (node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromiseCtx (node_modules/bluebird/js/release/promise.js:606:10)
at Async.Object.<anonymous>.Async._drainQueue (node_modules/bluebird/js/release/async.js:138:12)
at Async.Object.<anonymous>.Async._drainQueues (node_modules/bluebird/js/release/async.js:143:10)
at Immediate.Async.drainQueues [as _onImmediate] (node_modules/bluebird/js/release/async.js:17:14)
Как я понимаю, тест видит строку с
return models.UserModel.findById(id)
и возвращает результат update null.
Есть документация на эту тему, но я не совсем не понял что там да как, ибо промисы для меня тема новая.
Вот ссылка на документацию Jest на тему промисов
Всем спасибо за ответы!)
Давайте советы!