Solidity devuelve totalSupply() como 1 trillón + los 9 decimales como 1 trillón concatenado con 9 ceros.
Entonces, cuando trato de hacer una prueba de mocha para verificar que el suministro sea 1T, falla porque el número tiene 9 ceros adicionales al final y no tiene un punto decimal.
Entonces como cambiar
BigNumber { value: "1000000000000000000000" } a 1000000000000 para que pase mi prueba.
Esta es mi prueba que falla;
it('Should correctly set totalSupply to: 1T', async () => { const totalSupply = await hardhatToken.totalSupply(); var tokenBalance = totalSupply.toString(); console.log(tokenBalance); console.log(ethers.BigNumber.from(totalSupply, 9)); expect(totalSupply).should.be.bignumber.equal(1000000000000); });¡Tengo la biblioteca BN.js pero no puedo resolver el proceso! Me gustaría hacerlo correctamente sin solo cortar los últimos 9 dígitos, ya que habrá otras pruebas para escribir con problemas similares.
Escribo mi prueba de manera que calculo decimales por separado y, en afirmación, concateno ceros decimales con valor.
it('Should correctly set totalSupply to: 1T', async () => { const totalSupply = await hardhatToken.totalSupply(); const decimals = ethers.BigNumber.from(10).pow(9); expect(totalSupply).to.equal( ethers.BigNumber.from(1_000_000_000_000).mul(decimals) ); });