Pourquoi tester est crucial
Un bug dans un smart contract peut coûter des millions. Les tests ne sont pas optionnels, ils sont vitaux.
Les approches de test
Hardhat + TypeScript
describe("Token", () => {
it("should transfer tokens", async () => {
const [owner, recipient] = await ethers.getSigners();
const token = await Token.deploy();
await token.transfer(recipient.address, 100);
expect(await token.balanceOf(recipient.address)).to.equal(100);
});
});
Foundry (Solidity natif)
function testTransfer() public {
token.transfer(recipient, 100);
assertEq(token.balanceOf(recipient), 100);
}
function testFuzz_Transfer(uint256 amount) public {
vm.assume(amount <= token.balanceOf(address(this)));
token.transfer(recipient, amount);
assertEq(token.balanceOf(recipient), amount);
}
Notre stack recommandée
Foundry pour les tests unitaires (rapidité), Hardhat pour les tests d'intégration (écosystème JS).


