Trüffeltest: Wie testet man den Ethertransfer? Saldo eines bestimmten Kontos?

Wie kann ich testen, ob mein Vertrag tatsächlich Geld auf ein bestimmtes Konto überweist?

function _transfer(address receiver_, uint256 payout) internal{
    receiver_.transfer(payout);
}

Testen in JavaScript-Syntax. Erwarte etwas wie:

assert.equal(accounts[1].balance, 100 Ether);

Antworten (1)

Um den Kontostand geltend zu machen, versuchen Sie Folgendes:

let expectedBalance = web3.toBigNumber(web3.toWei(3, 'ether'));
let actualBalance = await web3.eth.getBalance(accounts[1]);

assert.deepEqual(actualBalance, expectedBalance, "Balance incorrect!");
Danke. Besonders die Verwendung von web3.eth ist sehr hilfreich: web3.js - Ethereum JavaScript API
Als Update zu dieser Antwort befindet sich die in dieser Antwort verwendete BigNumber-Funktionalität in aktuellen Versionen von web3 jetzt in web3.utils als web3.utils.toBN. Dokumentation hier
Wenn Sie ethersund verwenden hardhat, gibt es auch dort eine praktische Funktion:ethers.utils.formatEther(big_number_balance);