Mocha + Sinon тестирует мангусты - PullRequest
0 голосов
/ 19 октября 2018

У меня есть следующая функция, вызываемая на конкретном маршруте, и я пытаюсь проверить, вызывается ли внутри метод мангуста с определенным параметром.Мой код:

import boom from 'boom'
import User from '../models/model.user'


export const getSingle = async (req, res, next) => {
    try {
        const user = await User.findById(req.payload.id, '-auth')
        if (user) {
            return res.json({user})
        }
        return next(boom.notFound('User not found'))
    } catch (err) {        
        return next(boom.badImplementation('Something went wrong', err))
    }
}

Мой тестовый пример:

process.env.NODE_ENV = 'test'
import 'babel-polyfill'
import mongoose from 'mongoose'
import sinon from 'sinon'
require('sinon-mongoose')
import { getSingle } from '../src/controllers/controller.user'
const User = mongoose.model('User')


describe('User Controller ----> getSingle', () => {
    it('Should call findById on User model with user id', async () => {
        const req = {
                    payload: {
                        id: '123465798'
                    }
                }
        const res = { json: function(){} }
        const next = function() {}
        const UserMock = sinon.mock(User)

        UserMock.expects("findById").once().withExactArgs('123465798', '-auth')
        await getSingle(req, res, next)           
        UserMock.verify()



    })
})

Тест не пройден, поскольку метод не был вызван, хотя он и был.

1 Ответ

0 голосов
/ 22 октября 2018

Импортируйте ту же модель в тесте, которая используется в тестируемом коде, т.е. ../models/model.user, и она должна работать как положено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...