柴应该是大数相等不起作用



我需要这样的柴

const BigNumber = web3.BigNumber;
require('chai').use(require('chai-bignumber')(BigNumber)).should();

和测试时

let balance = await contract.balanceOf(accountToReceive);
should.be.bignumber.eql(countToSend); //works fine
ownerBalance = await contract.balanceOf(owner);
should.be.bignumber.equal(settings.initialSupply.mul(utils.toBN(10).pow(_decimals)).sub(countToSend)); // gives en error

错误码

AssertionError: expected <BN: 94e47b8d68171533ffff9c> to equal <BN: 94e47b8d68171533ffff9c>
+ expected - actual
at Context.<anonymous> (test/MOS.test.js:79:33)
at processTicksAndRejections (node:internal/process/task_queues:96:5)

你可以使用chai插件,它应该和should一起工作。

参见其用法:https://www.chaijs.com/plugins/chai-bn/

我的代码也面临同样的问题。我找到了一个适合我的好办法。

尝试以下操作:

require('chai').use(require('chai-as-promised')).should();
.use(bnChai(web3.utils.BN));

正如我在更新中提到的,你可以使用JS Bigint,用它做所有的数学运算然后把它作为字符串传递给BN构造函数,比如utils.toBN((1000000n * 5748553687688487n).toString())

我也遇到过同样的问题,答案很简单仅使用chai的expect函数与to.be.bignumber.equal

例子:

const { expect } = chai;
const { BN } = require('@openzeppelin/test-helpers');
const exp_val = new BN(); // any value
expect(contract.method()).to.be.bignumber.equal(exp_value);

相关内容

  • 没有找到相关文章

最新更新