首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向模拟构造函数中注入模拟依赖项

向模拟构造函数中注入模拟依赖项
EN

Stack Overflow用户
提问于 2022-06-22 21:59:43
回答 1查看 52关注 0票数 0

如何模拟_SqsService.getSqsQueueURL的返回值?这是编译的,但是函数返回未定义的。我需要将sqsMocked注入sqsServiceMocked吗?如果是这样的话,是怎么做的?

测试:

代码语言:javascript
复制
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({}, {}))
    ...

正在测试的系统:

代码语言:javascript
复制
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",

响应未定义

EN

回答 1

Stack Overflow用户

发布于 2022-06-23 21:43:18

我还没有想出通过模仿它来实现这个工作的方法,所以我现在已经修改了原型。如果你有更好的建议,请分享

代码语言:javascript
复制
jest.mock('../../../lambda-resources/AWS/Services/SQSService');
import { SQSService } from '../../../lambda-resources/AWS/Services/SQSService';

test('getSqsQueueUrl should...', async () => {    
    SQSService.prototype.getSqsQueueUrl = (() => Promise.resolve(''));
...


afterEach(() => {
    delete SQSService.prototype.getSqsQueueUrl;
});    
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72722465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档