У меня есть следующая функция, вызываемая на конкретном маршруте, и я пытаюсь проверить, вызывается ли внутри метод мангуста с определенным параметром.Мой код:
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()
})
})
Тест не пройден, поскольку метод не был вызван, хотя он и был.