@architect/sandbox
建筑师本地开发环境:在一个内幕沙盒中运行全建筑师项目并离线
安装
npm i @architect/sandbox
国 际
启动沙盒
npx sandbox
或者如果从里面运行 Sandbox @architect/architect数字 :
npx arc sandbox
CLI 选项
-p, (中文(简体) ),--port- 手工指定 HTTP 端口- 默认为
3333
- 默认为
-h, (中文(简体) ),--host- 指定供Sandbox监听的主机接口- 默认为
0.0.0.0(机器上所有可用的接口) - 只接受本地连接, 请指定
localhost
- 默认为
-v, (中文(简体) ),--verbose- 启用动词记录-d, (中文(简体) ),--debug- 启用调试记录-q, (中文(简体) ),--quiet- 禁用(大多数)记录--disable-delete-vendor- 启动时禁用删除 Lambda 供应商 dirs--disable-symlinks- 禁用并联src/shared输入所有函数并使用文件复制
环境变量
ARC_API_TYPE- 设置 API 网关 API 类型- 可以成为其中之一
http(别名为httpv2, (中文(简体) ),httpv1, (中文(简体) ),rest - 默认为
http
- 可以成为其中之一
ARC_ENV- 说吧testing|staging|production- 默认为
testing
- 默认为
ARC_HOST- 指定供Sandbox监听的主机接口- 默认为
0.0.0.0(机器上所有可用的接口) - 只接受本地连接, 请指定
localhost
- 默认为
ARC_LOCAL- 如与下列情况一并存在和使用:ARC_ENV=staging|production,模拟直播staging或者说production环境- 指定端口 :
ARC_PORT- 手工指定 HTTP 端口- 默认为
3333
- 默认为
ARC_EVENTS_PORT- 手动指定事件总线端口- 默认为
4444
- 默认为
ARC_TABLES_PORT- 手动指定本地DynamoDB端口- 默认为
5555
- 默认为
ARC_INTERNAL_PORT- 手工指定内部Sandbox + AWS 服务端口- 默认为
2222
- 默认为
ARC_DB_EXTERNAL- (Boolean)使用外部的DynamoDB工具(例如: AWS 无 SQL 工作台(中文(简体) )ARC_QUIET- 如果存在,则禁用(大多数)记录
API 密码
Sandbox被设计成融入您的应用程序的测试套房. 在大多数情况下你只需要利用 sandbox.start() 财务报告和审定财务报表 sandbox.end()然而,个人Sandbox服务也可以单独开始和停止。 (见下文. ) (中文(简体) )
可传递包含下列参数的选项对象:
apigateway- 说吧 字符串 - 指定 API 网关 API 类型- 默认为
http - 可以成为其中之一
http(别名为httpv2, (中文(简体) ),httpv1, (中文(简体) ),rest
- 默认为
cwd- 说吧 字符串 - 指定一个工作目录(用于在测试模拟器瞄准沙盒)deleteVendor- 说吧 布尔 - 启动时删除Lambda供应商 dirs- 默认为
true
- 默认为
env- 说吧 对象 - 自动测试中Lambda引用的环境变量- 字符串值覆盖同一名称的内侧 vars 通过
.env或者说prefs.arc文件 undefined值删除同名设置的任何内存 vars.env或者说prefs.arc文件
- 字符串值覆盖同一名称的内侧 vars 通过
port- 说吧 字符串或数字 - 指定 HTTP 端口- 默认为
3333
- 默认为
quiet- 说吧 布尔 - 禁用(大多数)记录runStartupCommands- 说吧 布尔 - 禁用@sandbox-start命令- 默认为
true
- 默认为
runtimeCheck- 说吧 字符串 - 检查运行时版本不匹配- 如果设置为
warnSandbox 会警告 Stdout 中的错配 - 如果设置为
error(针对试验环境建议) 沙盒启动失败 - 不默认运行
- 如果设置为
symlink- 说吧 布尔 - 从每个Lambda的属地内部(例如:.src/http/get-index/node_modules/@architect/shared→src/shared(中文(简体) )- 默认为
true false复制共享代码输入每个 Lambda, 这会导致启动速度和依赖补水速度慢得多
- 默认为
watcher- 说吧 布尔 - 禁用 Sandbox 文件监视器(和相关 Sandbox 文件监视器插件 API)- 默认为
true
- 默认为
沙盒
启动并关闭 Sandbox; 除非您有具体的服务需求, 我们一般建议大多数人使用此接口进行测试
sandbox.start(options[, callback]) → [Promise]
启动 Sandbox ; 首先检查是否有可消费的端口, 打印一个横幅, 加载建筑师和用户地环境变量, 水合物应用程序依赖性, 并开始各种 Sandbox 服务( 包括 @events, (中文(简体) ), @queues, (中文(简体) ), @tables, (中文(简体) ), @indexes, (中文(简体) ), @http, (中文(简体) ), @static 财务报告和审定财务报表 @ws) (中文(简体) ).
调用 callback 一旦一切准备就绪,或返回 promise 若为 callback 是恶作剧.
sandbox.end([callback]) → [Promise]
关闭任何开始 sandbox.start()。启动 callback 关闭或返回 promise 若为 callback 是恶作剧.
示例
磁带
let sandbox = require('@architect/sandbox')
let test = require('tape')
test('Start the Sandbox', async t => {
t.plan(1)
let result = await sandbox.start()
t.equal(result, 'Sandbox successfully started')
})
test('Tests go here', t => {
// Make use of various Sandbox resources in your tests...
})
test('Shut down the Sandbox', async t => {
t.plan(1)
let result = await sandbox.end()
t.equal(result, 'Sandbox successfully shut down')
})
欢乐
let sandbox = require('@architect/sandbox')
beforeAll(async () => {
let result = await sandbox.start()
expect(result).toBe('Sandbox successfully started')
})
afterAll(async () => {
let result = await sandbox.end()
expect(result).toBe('Sandbox successfully shut down')
})
test('Tests go here', () => {
// Make use of various Sandbox resources in your tests...
})
发展
所需资源
这个存储器的测试需要您拥有 deno 运行时间安装在您的本地机器上 。 安装 deno 访问: https://deno.land/#安装
运行测试
要在沙盒上工作, 首先确定您已经安装了依赖性 :
npm install
进行所有测试,包括天线:
npm test
跑来跑来跑去
npm run lint
仅进行单元测试(位于 test/unit:
npm run test:unit
要获取基于单位测试执行的代码覆盖报告 :
npm run coverage
仅进行综合测试(位于“测试/综合”):
npm run test:integration
要让测试运行 额外的噪音类似,添加 NOISY_TESTS=true 环境 var
