Unit Test中.ts文件Tx.contractCall合约名称参数类型咨询
关于Unit Test中Tx.contractCall的类型与代码转换问题
合约名称的参数类型
在TypeScript单元测试代码中,Tx.contractCall的第一个参数(合约名称)为字符串类型,直接传入合约的标识符字符串即可,比如你代码里的"dex"写法是正确的。
从Clarity语句到TypeScript代码的转换
针对你提供的Clarity调用语句:
(contract-call? .dex provide-liquidity .avocado u100 u100)
转换后的正确TypeScript单元测试代码如下:
Tx.contractCall( "dex", "provide-liquidity", [ types.principal("ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.avocado"), // 对应Clarity中的.avocado types.uint(100), // 对应Clarity中的u100 types.uint(100) // 对应Clarity中的u100 ], deployer // 调用发起者的principal,需确保该变量存储的是合法的地址字符串 )
关键细节说明
- 你原代码中
types.principal(deployer).avocado的写法错误,types.principal()方法直接接收完整的principal字符串作为参数,无需额外拼接.avocado。如果deployer变量本身就是.avocado对应的完整principal(比如"ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.avocado"),直接写types.principal(deployer)即可。 - Clarity中的无符号整数
u100,在TypeScript中通过types.uint(100)构造,这是类型转换的标准方式。
内容的提问来源于stack exchange,提问作者Bart Brickle
相关产品推荐
相关产品推荐

