返回介绍

1.5. 理解测试

发布于 2023-05-20 17:17:06 字数 5159 浏览 0 评论 0 收藏 0

理解测试代码

如何本地调试handler

chainSDK提供了一个简单的本地调试器用于开发者快速的调试自己的handler,这个debugger可以单进程模拟一个链的初始化,执行tx,出块等操作

准备工作

首先,需要创建一个可运行的js文件。这里我们推荐创建一个可供mocha调用的测试文件,可同时满足自动化流程测试和手动调试器调试的需要。不使用mocha的用户也可直接创建一个单纯的js文件,供调试器调用

这里是一个简单的js文件示例,可供mocha调用的测试文件可参考demo/dpos/test/test.ts

async test() {
    // step 1. 创建并初始化session
    // step 2-1. 模拟链上操作
    // step 2-2. 执行一些view函数,查看结果
    // step 2-3. 模拟链上出块,链高度增长
}

test()

示例代码

const logger = initLogger({loggerOptions: {console: true}});
const {err, debugger} = await createValueDebuger(initChainCreator({logger}), path.join(__dirname, '../chain'));
session = debugger.createIndependSession();
await session.init({height: 0, accounts: 4, coinbase: 0, interval: 10, preBalance: fromCoin(1)})

以上代码创建了一个debugger对象,从debugger对象创建了一个session实例,并初始化该实例

createValueDebuger函数原型

function createValueDebuger(chainCreator: ChainCreator, dataDir: string): Promise<{err: ErrorCode, debuger?: ValueChainDebuger}>

创建一个Debugger用于调试,一个Debugger可以看作一个虚拟的链实例

参数

  • chainCreator creator实例,当前可以直接填入代码initChainCreator({logger})
  • dataDir 链package目录,该目录下必须存在config.json文件。config.json文件中指定了链的共识、共识参数和handler的位置,该debugger创建的所有session都共享同样的设置
session = debugger.createIndependSession();

创建一个session. 各种调试命令都需要通过session执行。一个debugger可以创建多个独立的session, session间数据相互独立

await session.init({height: 0, accounts: 4, coinbase: 0, interval: 10, preBalance: fromCoin(1)})

初始化session, 相当于执行链的create命令。handler的genesisListener函数会被调用

该接口的具体参数说明见debugger文件

使用session的接口模拟链上操作,包括执行tx,执行view函数,链高度增长等。具体接口和说明见debugger文件

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文