【发布时间】:2022-09-30 00:39:45
【问题描述】:
我试图在jest 中模拟aws-sdk。
我在<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,
}));
...
使用上面的代码,当我运行npm run jest:coverage -- -u 时出现错误:
TypeError: AWS.DynamoDB.DocumentClient is not a constructor
当我添加以下行时:
AWS.DynamoDB.DocumentClient = jest.fn().mockImplementation(() => ({
}));
我得到以下错误:
ConfigError: Missing region in config
我不确定如何在node.js 中成功模拟aws-sdk
标签: javascript node.js unit-testing jestjs aws-sdk