记录一下写truffle的test文件时踩的坑

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33612918/article/details/87869209

坑1

meta.getBalance.call(address)方法不可用,无法得到余额
原因没找到,坑了我很久,我的truffle版本为v5.0.4,可能是版本的原因

解决办法

使用web3的方法替代,代码如下

    async function myGetBalance(address){
        let value = 0
        await web3.eth.getBalance(address).then( v => {
            value = v
        })
        return value
    }
    //调用
    let balance = await myGetBalance(user_address)

坑2

报错Error: Number can only safely store up to 53 bits

解决办法

应该是以太坊大数(BN)的原因,将

userPaid = registrantsPaid.toNumber()
//修改为
userPaid = registrantsPaid

坑3

meta.<variableName>.call(<address>)调用soliditypublic变量时,返回的是promise对象

解决办法

promise方法即可

坑4

web3.toWei(1, 'ether')方法不可用,报错TypeError: web3.toWei is not a function

解决办法

作为替代,使用web3.utils.toWei(1, 'ether')

总结

网上很多truffle的资料过时了,就连一些官网上的教程的方法都不可用,还是需要不断的踩坑才能进步。
web3是个好东西,有方法不可用的话尽量用web3的方法来替代。

猜你喜欢

转载自blog.csdn.net/qq_33612918/article/details/87869209