blockchain | 使用truffle测试合约

发布时间 2023-04-06 09:07:18作者: Mz1

blockchain | 使用truffle测试合约

使用truffle test功能对之前的合约进行测试
参考:https://www.qikegu.com/docs/4816

本质上的过程还是部署到测试链子上,然后进行一系列操作。
如果要临时环境还可以用truffle develop进行创建:https://learnblockchain.cn/docs/truffle/quickstart.html#testing
image

测试代码如下【教程中的代码少了await,可能会失败】:

// 首先,`require`合约并将其分配给一个变量`MyContract`
const MzContract = artifacts.require('./MzContract.sol');

// 调用“contract”函数,并在回调函数中编写所有测试
// 回调函数提供一个“accounts”变量,表示本地区块链上的所有帐户。
contract('MzContract', (accounts) => {

    // 第1个测试:调用get()函数,检查返回值,测试合约中value初始值是否是: 'hello mz'
    it('initializes with the correct value', async () => {
        // 获取合约实例
        const mzContract = await MzContract.deployed()
        const value = await mzContract.get()
        // 使用断言测试value的值
        assert.equal(value, 'hello mz')
    })

    // 第2个测试: 调用set()函数来设置value值,然后调用get()函数来确保更新了值
    it('can update the value', async () => {
        const mzContract = await MzContract.deployed()
        await mzContract.set('New Value');           // 这里异步需要等待,否则还没有进行交易就过去了。
        const value = await mzContract.get()
        assert.equal(value, 'New Value')
    })
})

测试通过:
image