Как проверить содержимое события модуля Aptos в тесте Move

Проверка состояния может пройти даже при неверном идентификаторе в событии. В Aptos есть типизированное тестовое чтение событий, выпущенных во время выполнения.

Отберите события по типу приложения

Импортируйте aptos_framework::event в модуль. Минимальный тест создаёт одно событие Packed и проверяет номер заказа. Для проверки рабочего пути замените прямой emit настоящей функцией упаковки.

#[event]
struct Packed has drop, store { order: u64 }

#[test]
fun packs_one_order() {
    event::emit(Packed { order: 17 });
    let entries = event::emitted_events<Packed>();
    assert!(entries.length() == 1 && entries[0].order == 17, 0);
}

Проверьте число событий отдельно от значений

Функция, дважды выпустившая заказ 17, прошла бы простую проверку присутствия. Сравнение длины выявляет дубль. Добавьте случай с двумя разными заказами и проверьте значения в порядке выпуска. Вспомогательная функция доступна в тестах Move, а рабочий индексатор читает события зафиксированных транзакций через свой источник.

Источники