Matchstick — это фреймворк для модульного тестирования субграфов, предназначенный для проверки логики маппингов в окружении The Graph. Он имитирует поведение graph-node и предоставляет изолированную среду (sandbox) для выполнения и проверки обработчиков событий, которые преобразуют входящие данные блокчейна в сущности графа. Matchstick позволяет разработчикам воспроизводить сценарии обработки транзакций и логов, запускать маппинги и сравнивать ожидаемые состояния хранилища с фактическими результатами.
Инструмент ориентирован на автоматизацию тестов логики маппинга и упрощение процесса разработки субграфов: разработчики могут создавать сценарии с поддельными событиями и вызовами контрактов, контролировать состояние сущностей и утверждать корректность преобразований без развёртывания в тестовую или основную сеть. Исторически Matchstick возник как ответ сообщества на необходимость локальной отладки маппингов и воспроизводимости тестовых случаев при развитии экосистемы The Graph.
- Эмуляция graph-node: предоставляет среду, имитирующую базовые аспекты поведения ноды The Graph для запуска маппингов вне продакшн-инфраструктуры.
- Поддержка событий и вызовов контрактов: позволяет создавать и отправлять в маппинги поддельные события, транзакции и вызовы smart-контрактов для проверки их обработки.
- Изолированное хранилище сущностей: реализует тестовый стор для сохранения и чтения сущностей, что даёт возможность сравнивать ожидаемое и фактическое состояние после выполнения маппинга.
- Фреймворк для утверждений: включает механизмы утверждений (assertions) для проверки наличия сущностей, значений полей и количества записей в сторе.
- Интеграция с процессом разработки: применяется вместе с инструментами сборки и тестирования, упрощая запуск набора тестов mаппингов в автоматизированных пайплайнах.
- Конфигурируемость сценариев: поддерживает настройку входных данных и начального состояния сторе, позволяя моделировать различные ветви логики маппинга.
- Повышение надёжности субграфов: способствует раннему обнаружению ошибок в логике трансформации данных и предотвращению регрессий при обновлениях маппингов.
- Документация и примеры: обычно сопровождается примерами тестов и шаблонами, демонстрирующими типичные шаблоны создания событий и проверок результатов.