TGViewer
DEV: Рубиновые тона DEV: Рубиновые тона @dev_in_ruby_colors · 3.28K subscribers
Post #581 1.32K
Можно ли в тестах для контрактов легко получить нужное событие? Вполне. К примеру, есть транзакция:

const tx = contract.doSomething();
const receipt = await tx.wait();


Тогда мы можем сделать функцию для поиска события

import type { ContractReceipt } from 'ethers';

async function eventFor(receipt: ContractReceipt, name: string) {
return receipt?.events?.find(function (e) {
return e.event === name;
});
}


Ищем событие

const myEvent = await eventFor(receipt, "MyEvent");


И достаём из него нужное поле

myEvent?.args?.value


Вопросительные знаки тут потому, что наличие этих полей не гарантированно, то есть формально события может и не быть (другими словами, это атрибуты optional). Но так как мы делаем это в тестах и как раз ожидаем, что оно *должно быть* (если, конечно, все предварительные условия выполнены), то всё должно сработать корректно. А вот если события как раз нет, то вылетит ошибка, тест сломается и мы поймём, что где-то у нас проблема.
  • 🔥 11
  • 👍 3
More from @dev_in_ruby_colors
  1. Oct 4, 2026В этом уроке по абстрактной алгебре говорим про ideals (идеалы), factor (quotient) rings и…
  2. Sep 28, 2026Github буйствует
  3. Sep 26, 2026В этом уроке по абстрактной алгебре говорим про области целостности, делители нуля, характ…
  4. Sep 22, 2026А тем временем сказ о ведьмаке, потерявшем память, уже доступен в виде аудиокниги. Целых 1…
  5. Sep 20, 2026В этом уроке по абстрактной алгебре продолжаем говорить о кольцах: в частности о subrings…
  6. Sep 17, 2026Сделал обзор актуальных библиотек JS для сбора данных, 10 штук бодрых решений на все случа…
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 →