- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在运行 jest 测试来测试 dynamodb.js 文件和使用 dynamodb.js 文件的 create.js 文件。 create.js 模块是通用的,可以通过构造参数对象并将其传递到任何表中。但是,我收到了下面的错误,我需要帮助。
TypeError: AWS.DynamoDB.DocumentClient is not a constructor
__mock__
folder
const getMock = jest.fn().mockImplementation(() => {
return {
promise() {
return Promise.resolve({});
}
};
});
const putMock = jest.fn().mockImplementation(() => {
return {
promise() {
return Promise.resolve({});
}
};
});
// eslint-disable-next-line func-names
function DynamoDB() {
return {
DocumentClient: jest.fn(() => ({
get: getMock,
put: putMock
}))
};
}
const AWS = { DynamoDB, getMock, putMock };
module.exports = AWS;
dynamodb.js
const AWS = require('aws-sdk');
const http = require('http');
const https = require('https');
const url = require('url');
module.exports = endpoint => {
const { protocol } = url.parse(endpoint || '');
const agentConfig = {
keepAlive: true,
keepAliveMsecs: 20000
};
const httpOptions =
protocol === 'http:' ? { agent: new http.Agent(agentConfig) } : { agent: new https.Agent(agentConfig) };
const db = new AWS.DynamoDB({
endpoint,
httpOptions
});
const docClient = new AWS.DynamoDB.DocumentClient({
service: db
});
return {
docClient,
db
};
};
dynamodb.spec.js
const AWS = require('aws-sdk');
const dynamodb = require('../../../src/dynamodb');
describe('dynamodb.js', () => {
beforeEach(() => {
// jest.resetModules();
});
test('calls generic-dynamodb-lib dynamodb', async () => {
dynamodb('http://localhost:8001');
expect(AWS.DynamoDB).toHaveBeenCalled();
expect(AWS.DynamoDB.DocumentClient).toHaveBeenCalled();
});
});
create.js
// Imports here
const create = async (log, docClient, table, tableRecord) => {
try {
await docClient.put({ TableName: table, Item: tableRecord }).promise();
} catch (error) {
log.error({ message: 'DynamoDB error', ...error });
throw Error.internal();
}
return tableRecord;
};
module.exports = create;
我还尝试替换
中的手动模拟模拟 使用 doMock block ,但仍然继续收到上述相同的错误。
最佳答案
DocumentClient
应该是静态属性,而它被 mock 为实例属性。
它应该是:
const DynamoDB = jest.fn().mockReturnValue({});
DynamoDB.DocumentClient = jest.fn().mockReturnValue({
get: getMock,
put: putMock
});
关于javascript - 使用 Jest 进行测试时,TypeError : AWS. DynamoDB.DocumentClient 不是构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62672707/
如果我直接在桌面应用程序中使用 DocumentClient,则会暴露与构建文档客户端时使用的 api key 相关的安全问题。似乎没有办法保护 key 。将 key 带入客户端可能会导致黑客完全控制
我遇到一种情况,我需要检索特定文档,但我不知道它是 PartitionKey。 该方法如下所示: public async Task GetItemAsyncNoGroupId(string
我遇到一种情况,我需要检索特定文档,但我不知道它是 PartitionKey。 该方法如下所示: public async Task GetItemAsyncNoGroupId(string
DocumentClient 线程安全吗? 我收到了混合消息: 来自 MSDN https://msdn.microsoft.com/library/azure/microsoft.azure.doc
为什么没有 CreateDocumentQuery 的异步版本? 这个方法例如可以是异步的: using (var client = new DocumentClient(new Uri(en
我正在尝试遵循 azure DocumentDb 快速启动项目。我将要开发的应用程序将在 WPF 中而不是在控制台中,因此为了加快 documentdb 的速度,我创建了一个新的 wpf 项目 (.N
我在本地使用 DynamoDB,可以创建和删除表。我创建了一个只有一个键的表,如下所示 const tablePromise = dynamodb.listTables({}) .promis
我有一个 Azure Function v2,它调用一个实用程序库,该库又实例化一个 DocumentClient。当在本地运行我的函数时,它会在此行引发异常: _client = new Docum
Cosmos 入门和文档 db/sql。为什么这不起作用?我可以看到,没有抛出任何错误。有数据应该返回。 private const string EndpointUri = "some ur
我可能在这里遗漏了一些明显的东西,但是...我正在尝试使用 DocumentClient.UpsertDocumentAsync(...) 更新插入到 CosmosDB 中。问题是,我无法创建 Doc
我正在 F# 中编写一个 http 触发器 Azure 函数,我想绑定(bind)一个 DocumentClient 类型的参数,以便更好地控制在 Cosmos DB 中执行的查询。这是我到目前为止所
如何在 docClient.get() 之外获取 data.Item.Name 以便在其他函数中进一步使用它。 const docClient = new awsSDK.DynamoDB.Docume
祝大家感恩节快乐!我正在编写一个调用 DynamoDB 的 lambda 函数,但我遇到了设计/实现问题。 我有以下代码结构: exports.handler = function(event, co
所以我正在运行一些单元测试,我想从根本上消除 promise ,以便它在我想要的时候解决或拒绝。这是我的代码的样子。 getStatusForPromiseID = async (promiseId,
我尝试从 aws-sdk 使用 Amazons DocumentClient for AWS.dynamodb。我还使用 Amazon 的标准 node.js 虚拟机:“64 位 Amazon Lin
我正在使用 AWS.DynamoDB.DocumentClient,在本地使用 Dynamodb(端口 8080)。当我执行放置时,回调中的 data 变量是一个空对象。我错过了什么吗? import
我正在为下面的代码编写单元测试,它使用带有 where(filter) 条件的文档客户端 CreateDocumentQuery 方法。 var documentQuery = ReadOnlyDo
我的哈希键是一个名为 pid 的数字 这是代码 app.get('/register', (req, res) => { var params = { TableName:"passengers"
我是 DynamoDB 的新手。 当我使用 AWS.DynamoDB.DocumentClient 类从表中读取数据时,查询有效,但我得到的结果格式错误。 询问: { TableName: "us
这个问题与 DocumentClient 中的 Microsoft.Azure.DocumentDB.Core v2.11.2 相关。 (更新:该错误也存在于 Microsoft.Azure.Cosm
我是一名优秀的程序员,十分优秀!