I have tried to test a function, inside this functios there are async functions. I mocked only the function getDataExtracontractual(), this is my main function
const obtenerCargaMasiva = async () => {
const dataMasiva = await getDataExtracontractual()
const dataSort = await sorterData(dataMasiva.Items)
return {
data: dataSort
}
}
the other function is
const getDataExtracontractual = async () => {
const db = DynamoDbDatabase.getInstance();
const singleIndex = DynamoDbDatabase.getTypeIndex();
const params = {}
params.TableName = TableNameMatrix
params.IndexName = singleIndex.name
params.KeyConditionExpression = '#GSIPK = :GSIPK'
params.ExpressionAttributeNames = { '#GIR': 'PK', '#GSIPK': 'GSI1PK' }
params.ExpressionAttributeValues = { ':GIR': `${RC.Extracontractual}#`, ':GSIPK': RC.Extracontractual }
params.FilterExpression = '(begins_with(#GIR, :GIR) )'
return db.query(params).promise();
}
mi test is this
jest.mock("../../../../src/admin/rc/extracontractual/data-access");
const dataExtracontractual = require('./data/extracontractual.fake.json');
const DataAccess = require("../../../../src/admin/rc/extracontractual/data-access")
const Controller = require("../../../../src/admin/rc/extracontractual/controller")
describe("Test Service",()=>{
describe("Listar Extracontractual",()=>{
it("Se envian datos validos", async ()=>{
const { response,payload } = dataExtracontractual.service;
DataAccess.getDataExtracontractual.mockReturnValueOnce();
const result = await Controller.obtenerCargaMasiva(payload);
expect(result).toEqual(response)
})
})
})
When I run my test. I have the next error TypeError: Cannot read property 'Items' of undefined If I show dataMasiva. return undefined.
The solution was to pass getDataExtracontractual's mock result to .mockReturnValueOnce().