文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
1.5. 理解测试
理解测试代码
如何本地调试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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论