TGViewer
Из Solidity в AI и дальше Из Solidity в AI и дальше @solidityset · 2.49K subscribers
Post #928 698
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
  • ❤ 7
  • 👍 1
More from @solidityset
  1. Sep 22, 2026Какой язык программирования учить сейчас? На днях в Твиттере увидел небольшой пост о разви…
  2. Sep 18, 2026Интересная модель Jev Буквально пару дней назад в Твиттере многие начали обсуждение новой…
  3. Sep 14, 2026Графы повсюду Если вы также следите за новостями в мире ИИ, то наверняка уже все чаще встр…
  4. Sep 10, 2026GTA6, Cyberleek, блокчейн и безопасность Увидел несколько постов (тут и тут) про Cyberleek…
  5. Sep 9, 2026Работа с чистой энергией Дисклеймер Сегодня ава и название канала, наконец, поменялись. Я…
  6. Sep 9, 2026Channel name was changed to «Из Solidity в AI и дальше»
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →