[英]How to mock aws-sdk using jest mock, getting error "Missing region in config"
I am trying to mock aws-sdk
in jest
.我正在jest
地模拟aws-sdk
。
I have below code in <root>\utils\jest\__mocks__\mock-aws-sdk.js
.我在<root>\utils\jest\__mocks__\mock-aws-sdk.js
中有以下代码。
const AWS = require('aws-sdk');
jest.mock('aws-sdk', () => ({
config: {
update: jest.fn(),
},
EventBridge: jest
.fn()
.mockImplementation(() => ({
describeRule: mockDescribeRule,
})),
Lambda: jest
.fn()
.mockImplementation(() => ({
invoke: mockInvoke,
})),
DynamoDB: jest
.fn({
DocumentClient: jest.fn(),
getItem: jest.fn(),
batchWrite: jest.fn(),
batchGetItem: jest.fn(),
}),
}));
// And the mock implementation
const mockDescribeRule = jest.fn().mockImplementation((rule) => ({
Name: rule.Name,
}));
...
With above code I get error when I run the npm run jest:coverage -- -u
:使用上面的代码,当我运行npm run jest:coverage -- -u
时出现错误:
TypeError: AWS.DynamoDB.DocumentClient is not a constructor
When I add below lines:当我添加以下行时:
AWS.DynamoDB.DocumentClient = jest.fn().mockImplementation(() => ({
}));
I get below error:我收到以下错误:
ConfigError: Missing region in config
I am not sure how can I successfully mock the aws-sdk
in node.js
我不确定如何在node.js
中成功模拟aws-sdk
i think this might work in case you still search for the answer我认为如果您仍在寻找答案,这可能会起作用
jest.mock('aws-sdk', () => ({
...jest.mock('aws-sdk'),
DynamoDB: jest.fn().mockImplementation(() => {
return {
DocumentClient: jest.fn(),
getItem: jest.fn(),
batchWrite: jest.fn(),
batchGetItem: jest.fn(),
};
}),
}));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.