This is a section of the Cyfrin Solidity Course.
- git
- You'll know you did it right if you can run
git --version
and you see a response likegit version x.x.x
- You'll know you did it right if you can run
- foundry
- You'll know you did it right if you can run
forge --version
and you see a response likeforge 0.2.0 (816e00b 2023-03-16T00:05:26.396218Z)
- You'll know you did it right if you can run
git clone https://github.com/Welith/foundry-fundme
cd foundry-fundme
forge build
forge script script/DeployFundMe.s.sol
We talk about 4 test tiers in the video.
- Unit
- Integration
- Forked
- Staging
This repo we cover #1 and #3.
forge test
or
// Only run test functions matching the specified regex pattern.
"forge test -m testFunctionName" is deprecated. Please use
forge test --match-test testFunctionName
or
forge test --fork-url $SEPOLIA_RPC_URL
forge coverage
- Setup environment variables
You'll want to set your SEPOLIA_RPC_URL
as an environment variable. You can add it to a .env
file.
- You will need to create a wallet key, which will contain your
PRIVATE_KEY
, so that we do not expose it in the.env
file.- This is done with the
cast wallet import <KEY_NAME> -i
command, where<KEY_NAME>
can be replace with one of your choosing. The-i
command will prompt you to enter yourPRIVATE_KEY
and then lock it with a password.
- This is done with the
SEPOLIA_RPC_URL
: This is url of the sepolia testnet node you're working with. You can get setup with one for free from Alchemy
Optionally, add your ETHERSCAN_API_KEY
if you want to verify your contract on Etherscan.
- Get testnet ETH
Head over to faucets.chain.link and get some testnet ETH. You should see the ETH show up in your metamask.
- Deploy
forge script script/DeployFundMe.s.sol --rpc-url $SEPOLIA_RPC_URL --account <CREATED_WALLET_ACCOUNT> --broadcast --verify --etherscan-api-key $ETHERSCAN_API_KEY
After deploying to a testnet or local net, you can run the scripts.
Using cast deployed locally example:
cast send <FUNDME_CONTRACT_ADDRESS> "fund()" --value 0.1ether --account <CREATED_WALLET_ACCOUNT>
or
forge script script/Interactions.s.sol --rpc-url $SEPOLIA_RPC_URL --account <CREATED_WALLET_ACCOUNT> --broadcast
cast send <FUNDME_CONTRACT_ADDRESS> "withdraw()" --account <CREATED_WALLET_ACCOUNT>
You can estimate how much gas things cost by running:
forge snapshot
And you'll see an output file called .gas-snapshot
To run code formatting:
forge fmt