Организация prank в Foundry
Вчера в одном из конкурсных контрактов заметил интересный способ использовать фичу prank, которая позволяет исполнять функции за конкретного пользователя.
Обычно мы пишем тест и уже перед тем, как вызвать необходимую функции из под нужного аккаунта (владельца, пользователя, хакера), мы пишем
vm.startPrank(user);
и в завершении:
vm.stopPrank();
Порой для тестов это приходится прописывать довольно часто. Так вот, в этом контракте придумали поместить это все в модификатор:
modifier prank(address from) {
vm.startPrank(from);
_;
vm.stopPrank();
}
А потом использовать его, как обычно, в функциях:
function test_addLiquidity() public prank(user) {}
На мой взгляд достаточно элегантное решение.
#foundry #test #modifier #prank
Post #824
854
- 👍 14
- ❤ 1