模拟和测试由 Amplify @model 创建的 DynamoDB 表

Posted

技术标签:

【中文标题】模拟和测试由 Amplify @model 创建的 DynamoDB 表【英文标题】:Mock and Test DynamoDB Table created by Amplify @model 【发布时间】:2020-09-07 20:25:15 【问题描述】:

我使用@model 注释创建了一个表和一个函数,该函数将该表中的一个条目作为 PostAuthentication 触发器添加到用户池。 当我将它推送到 AWS 时它工作正常。但在本地测试时面临一些问题。

MockData 在 amplify/mock-data/dynamodb/fake_us-fake-1.db 中

在函数/function_name/index.js 中

import AWS from 'aws-sdk';
import  Logger  from '@dev.tools.thinkclear/common-util';

const options = 
  region: 'us-fake-1',
  endpoint: "<local_url>:62224/",
  accessKeyId: "fake",
  secretAccessKey: "fake"
;

AWS.config.update( 
  region: 'us-fake-1',
  endpoint: "<local_url>:62224/",
  accessKeyId: "fake",
  secretAccessKey: "fake"
);

const dynamoDBClientVar = new AWS.DynamoDB.DocumentClient(options);
// Some Data params 
const data = await dynamoDBClient.put(params).promise();

local_url 与运行 amplify mock api 的 url 相同。将 dynamodb 的端口更改为 62224。

放大模拟函数function_name

它抛出错误:NetworkingError: connect ECONNREFUSED 错误。

检查了这个答案以供参考: https://***.com/a/58925502/4578915

【问题讨论】:

你看过这个视频吗? youtu.be/OxrHplxZ8BA(使用 AWS Amplify 模拟和测试无服务器 API - AWS 在线技术讲座) 【参考方案1】:

我已经配置了它,它对我来说工作正常,

const AWS = require('aws-sdk');

// Local
const dynamoDb = new AWS.DynamoDB.DocumentClient(
    region: 'us-fake-1',
    endpoint: "http://localhost:62224/",
    accessKeyId: "fake",
    secretAccessKey: "fake"
);

// Live
// const dynamoDb = new AWS.DynamoDB.DocumentClient();

请按以上设置,如有疑问请留言。

【讨论】:

以上是关于模拟和测试由 Amplify @model 创建的 DynamoDB 表的主要内容,如果未能解决你的问题,请参考以下文章

模拟适用于 Android 的 AWS Amplify Auth API

Amplify Function 的模拟环境变量

带有 AWS Amplify 的 GraphQL - 如何启用对查询的排序

基于 Amazon Amplify 构建自己的首个 iOS 应用程序

基于 Amazon Amplify 构建自己的首个 iOS 应用程序

由 amplify 生成的 Graphql 查询运行良好,但由于身份验证规则而引发错误。为啥?