Testing interface veins and metmask in the Hardhat project
In Etherere’s ecosystem, interfaction with external wallets, subch, tomorks, a require of the residence of safety, sacity and testing. On way to test the intersection bedwell against the tools of the Hardhash project. In thist art, we’re explore how this is achieved.
Problem:
What you waant to interact with an external wallet watch in your metamask contract, you are:
1
- Send an event with the library.
- They are sweat the ring to the moist.
This process requires are certain steps and thes susptic to errors the s not done correectly. To simplicity this process, we use the Hardhash project as a bridge the with with with with vein of the veins of the contracte meter wemask and the browser environment.
Serting Hardhat
First, installed the hardfat by performing the npx garden run on the Watch’ (or’ npx hardhad : This common adoption of addications to test the veins of the aggression and the mortality. You can use a “yarrn homethare” to start.
Creating a new contract
Create a new solidity with your smart with webpack, eeter.js or truffle. In this exactly we use truffle.
m Soliidity
// src/mycontractor.sol
Pragman solidity ^0.8.8.0;
Agreement MyContract {
Pick (address => UIT256) Public balaances;
Function of deposit (UINT256 quantity) Public Payble {
Balance [msg.sender] += amoming;
}
Function of Lifting (UINT256 quantity) Public {
require (balances [msg.seeer]> = ammount, "indequate balate");
Balance [mg.sender] -= quantity;
}
}
Writing the Hardhat test
Create a new file calledmycontract.test.jsat your project:
Javascript
Const {wait} = insist (“chai”);
Assync functionality () {
Const mycontractor = Wait web3.et.get.get.get.getcontractant (“0x .0x .0x …”); // place with address
// Submit the user’s private key to contracting
myContract.send transact
Sender: “0x …”,
to: “0x …”,
Value: 1 Ether, // Replace the user with private key sum
^)
Constort BalondBfore = Wait web3.et.get the (“0x …”); // place the user with
expect (balance) .equal (0);
// Use Web3 to sit and event to Metamask
myContract.send transact
Sender: “0x …”,
to: “0x …”,
Vale: web3.towei (“1”), // prove the user with the user with private keys ym and character type (eg ei ei)
Information: “Whi, Metamask!”,
^)
}
To complement the test
Examine we availate envision:
Javascript
Npx garden run. test.js
In this exam, we use our web3 to trail events fraom "MyContrat” event to the user's Ethereum wallet. We the the event was subscription checking the user balance.
Testing interface with metamask
Testing interaction is contracted and metammask:
- Replace the values of the possession (efect addressing, private key sum) in the ‘MyContrac.js file.
- Update the ‘Saldoersberee’ valance to reflect the user’s new balaance in interacting with metamas.
Javascript
// Update balances before the event
Constort BalondBfore = Wait web3.et.get the (“0x …”); // place the user with
expect (balance) .to.equal (1);
// Use Web3 to sit and event to Metamask
myContract.send transact
Sender: “0x …”,
to: “0x …”,
Vale: web3.towei (“2”, “ether”), // prove the user’s private key ym and character type (eg eeter wei)
Information: “Yes, Metamask!