You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Truffle测试Solidity合约时遇TypeError: assert.equal is not a function错误

解决Truffle测试中assert.equal is not a function错误

问题根源

你当前导入的assert来自Node.js的console模块:

const { assert } = require('console');

这个console.assert仅支持console.assert(条件, 提示信息)的简单断言格式,没有equal这类用于值对比的断言方法,所以调用assert.equal时会触发类型错误。

修复方案

有两种可行的修复方式,选其一即可:

方式1:使用Chai断言库的assert

你已经在代码中引入了Chai,直接替换导入语句为Chai的assert即可:

// 替换原来的console导入
const { assert } = require('chai');

方式2:使用Truffle内置的assert

Truffle测试环境默认提供了内置的断言工具,无需额外导入,直接删除const { assert } = require('console');这一行,代码中的assert.equal就能正常使用。

修复后的完整代码示例

const { assert } = require('chai');

const Tether = artifacts.require('Tether.sol');
const RWD = artifacts.require('RWD');
const DecentralBank = artifacts.require('DecentralBank');

require('chai')
.use(require('chai-as-promised'))
.should()

contract('DecentralBank', ([owner, customer]) => {
    let tether, rwd, decentralBank;

    function tokens(number) {
        return web3.utils.toWei(number, 'ether')
    }

    before(async () => {
        tether = await Tether.new()
        rwd = await RWD.new()
        decentralBank = await DecentralBank.new(rwd.address, tether.address)

       await rwd.transfer(decentralBank.address, tokens('1000000'));

       await tether.transfer(customer, tokens('100'),{from: owner});
    })

    describe('Tether', async () =>{
        it('matches name successfully', async () => {
            const name = await tether.name()
            console.log(name)
            assert.equal(name, 'Tether')
        })
    })

})

内容的提问来源于stack exchange,提问作者Ali Moharrami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 02:05:20