How can I mock the return value of _SqsService.getSqsQueueURL? This compiles, but the function returns undefined. Do I need to inject sqsMocked into sqsServiceMocked? If so, how?
Test:
jest.mock('aws-sdk');
jest.mock('../../../lambda-resources/AWS/Services/SQSService');
import { SQS, Request, Service, AWSError } from 'aws-sdk';
import { mockDeep, DeepMockProxy } from 'jest-mock-extended';
import { GetQueueUrlResult } from 'aws-sdk/clients/sqs';
import { SQSService } from '../../../lambda-resources/AWS/Services/SQSService';
let sqsMocked: DeepMockProxy<SQS>;
let sqsServiceMocked: DeepMockProxy<SQSService>;
beforeEach(async () => {
sqsMocked = mockDeep<SQS>();
sqsServiceMocked = mockDeep<SQSService>();
sqsMocked.getQueueUrl.mockReturnValue(new Request<GetQueueUrlResult, AWSError>(new Service(), 'test'));
sqsServiceMocked.getSqsQueueUrl.mockResolvedValue(Promise.resolve('test'));
test('getSqsQueueUrl should...', async () => {
// It works when called directly from the unit test file, but not when called from the system under test in the code base itself
expect(await sqsServiceMocked.getSqsQueueUrl('a')).toBe('test'); await (await LeadsCreator({}, {}))
...
System under test:
const AWSSqs = new AWS.SQS();
const _SqsService = new SQSService(AWSSqs);
const response = await _SqsService.getSqsQueueUrl("x");
"jest": "^26.4.2",
"jest-mock-extended": "^2.0.6",
Response is undefined