So I'm running some unit tests and I want to essentially stub out the promise so it resolves, or rejects, when I want it to. Here is what my code looks like.
getStatusForPromiseID = async (promiseId, docClient) => { let data = await getStatusfromDB(promiseId, docClient); console.log("data.Items =========>", data.Items); return { "promiseId": data.Items[0].event_id, "status": data.Items[0].STATUS, "errors":data.Items[0].ERRORS } } function getStatusfromDB(promiseId, docClient) { console.log("In getActiveTokenFromDB " + promiseId); var params = { TableName: 'epayments-nonprod-transactions', KeyConditionExpression: 'event_id = :event_id', ExpressionAttributeValues: { ':event_id': promiseId } }; return docClient.query(params).promise(); } I would like to mock out docClient.query(params).promise()
Here is what my current test looks like, it runs but when I debug it says the PromiseStatus of resObj is rejected. I'd like to mock it out so I could have values in data.Items to assert.
describe('App function tests', ()=>{ test('getStatusForPromiseID', ()=>{ let docClient = new aws.DynamoDB.DocumentClient() docClient.query.promise = jest.fn() docClient.query.promise.mockImplementation(cb =>{ cb(true, {Items: [1,2,3]}) }) let resObj = getStatusForPromiseID('11011', docClient) expect(docSpy).toHaveBeenCalled() }) })