'Mocha js TypeError: Cannot read property 'calledWith' of undefined
I have created a function using sequelize orm
const { User } = require('./models')
const save = async ({ id, ...data }) => {
const user = await User.findOne({ where: { id } })
if (user) return await user.update(data)
return null
}
module.exports = save
Now i have created a unit test for it.
const { expect } = require('chai')
const { match, stub, sinon, resetHistory } = require('sinon')
const proxyquire = require('proxyquire')
const {
sequelize,
dataTypes,
checkModelName,
checkPropertyExists,
makeMockModels
} = require('sequelize-test-helpers')
const model = require('./src/models/models')
describe('Checking table element and function',() => {
const User = { findOne: stub() }
const mockModels = makeMockModels({ User })
const save = proxyquire('../sentinelFunction', {
'./models': mockModels
})
const id = 1
const data = {
user_name: 'Tarique',
gate_no: 12,
}
const fakeUser = { id, ...data, update: stub() }
let result
context('user does not exist', () => {
before(async () => {
mockModels.User.findOne.resolves(undefined)
result = await save({ id, ...data })
})
after(resetHistory)
it('called User findOne', () => {
expect(mockModels.User.findOne).to.have.been.called
})
it("didn't call user.update", () => {
expect(fakeUser.update).not.to.have.been.calledWith(match(data))
})
})
})
Now i am getting an 2 error as
Checking table element and function user does not exist called User findOne: TypeError: Cannot read property 'calledWith' of undefined
Checking table element and function user does not exist didn't call user.update: Error: Invalid Chai property: calledWith
Help me fix it please.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
