TGStat
TGStat
Qidiruv uchun matnni kiriting
Ilg‘or kanal qidiruvi
  • flag Uzbek
    Sayt tili
    flag Russian flag English flag Uzbek
  • Saytga kirish
  • Katalog
    Kanal va guruhlar katalogi Hududiy to‘plamlar Tematik to‘plamlar Платные каналы Kanallar qidiruvi
    Kanal/guruh qo‘shish
  • Reytinglar
    Kanallar reytingi Guruhlar reytingi Postlar reytingi
    Brendlar va shaxslar reytingi
  • Analitika
  • Postlarda qidiruv
  • Telegram'ni kuzatish
  • Targ‘ibot
    Yandex Business orqali reklama TGStat Agency orqali kanallarda reklama TGStat.ru saytida reklama
Из Solidity в AI и дальше

6 Nov 2023, 12:27

Telegram'da ochish Ulashish Shikoyat qilish

Foundry с 0. Часть 16

Думал тему из этого поста постепенно поднимать в нескольких других, но понял, что лучше основную идею изложить сейчас, а потом уже дополнять при необходимости.

А поговорим мы о работе с консолью: вызовом тестов и логированием из них.

Из предыдущих постов мы узнали, для того чтобы вызвать процесс тестирования нашего контракта, достаточно в консоли прописать:

forge test

или

forge test -vv

и других "-v..." для более подробной информации.

Тем не менее, порой, когда тестовых контрактов и самих тестов очень много, нам нужно вызвать что-то конкретное, и ждать выполнения всех тестов из всех контрактов может стоит нам времени.

Для этого существуют удобные дополнения к команде test:

1. forge test --match-test testName

Выполним конкретный тест из контрактов.

2. forge test --match-contract contractName

Выполним все тесты из конкретного контракта.

3. forge test --match-path Path

Выполнить тесты по указанному пути.

Так же мы может исключить какой-нибудь контракт или тест из процесса тестирования с помощью опций:

--no-match-test
--no-match-contract
--no-match-path


Более того, с помощью таких опций-хелперов мы можем подключать optimizer и указывать количество проходов:

--optimize
--optimizer-runs
--via-ir


Или указать EVM версию для наших тестов:

--evm-version

Как вы, надеюсь, поняли, перед опцией должно быть forge test, а после указание на файл / тест / версию и так далее.

Но, что самое интересное, эти команды можно комбинировать для точечных тестов, например:

forge test --match-contract myContract --match-test myTest --evm-version london

Также есть еще другие опции для тестов на форках, отслеживание газа и дебаггинг, но о них мы будем говорить уже в своих постах.

Все опции для тестов можно посмотреть тут:

https://book.getfoundry.sh/reference/forge/forge-test

Теперь пара слов о логировании в тестах.

Порой нам нужно будет выводить значения из наших тестов, чтобы узнать, кто был вызывающим функции, изменение баланса или результат деления. Для этого мы можем просто написать:

console.log(param);

Однако, если таких вызовов много в ходе выполнения теста, то можно очень просто потеряться в них. Поэтому предлагаю вам пару способов для удобного вывода информации.

1. Подписывать логи:

console.log("This is owner: ", contract.owner());

Будет так:

Logs:
This is owner: 0x00c7bF7d9E7D071Df3B53dEec96cD4bf0f6c0220


2. Разделять по строкам:

console.log("This is owner");
console.log(contract.owner());

Будет так:

Logs:
This is owner
0x00c7bF7d9E7D071Df3B53dEec96cD4bf0f6c0220


3. Выделять дефисами:

console.log("This is owner ----------- ", contract.owner());

Будет так:

Logs:
This is owner ---------- 0x00c7bF7d9E7D071Df3B53dEec96cD4bf0f6c0220


4. Оставлять пробелы, используя пустые логи:

console.log(" ");

5. Выделять разным цветом.

Для этого потребуется в импорте тестов добавить библиотеку StdStyle:

import {Test, console, StdStyle} from "forge-std/Test.sol";

После этого можно применять цвета к логам:

console.log("Owner: ", StdStyle.yellow(counter.owner()));

Стилей достаточно много: красный, зеленый, желтый, синий, мажента, голубой, жирный, приглушенный, курсив, зачеркнутый и обычный.

Попробуйте сами, так наглядность логов в ваших тестах станет еще лучше!

#foundry #lesson16

514 0 1 1 7
Katalog
Kanal va guruhlar katalogi Kanallar to‘plamlari Kanallar qidiruvi Kanal/guruh qo‘shish
Reytinglar
Telegram-kanallar reytingi Telegram-guruhlar reytingi Postlar reytingi Brendlar va shaxslar reytingi
API
Statistika API'si Postlar qidiruvi API'si API Callback
Kanallarimiz
@TGStat @TGStat_Chat @telepulse @TGStatAPI
O‘qish
Академия TGStat Telegram tadqiqoti 2019 Telegram tadqiqoti 2021 Telegram tadqiqoti 2023
Kontaktlar
Справочный центр Qo‘llab-quvvatlash Email Vakansiyalar
Har xil narsalar
Foydalanuvchi shartnomasi Maxfiylik siyosati Ommaviy oferta
Botlarimiz
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot