Перейти к основному содержанию
Для облегчения локальной разработки кода вашего Web3 Action вы можете использовать пакет @tenderly/actions-test (входит в состав tenderly-actions). Он предоставляет runtime Tenderly, позволяя запускать и тестировать ваш Web3 Action в локальном окружении. Установите пакет @tenderly/actions-test, чтобы тестировать функции Web3 Action локально.
example
yarn add --dev @tenderly/actions-test
Рекомендуется хранить тесты и скрипты запуска для web3-actions вне каталога actions root, чтобы не увеличивать размер проекта Web3 Action.
Вы можете использовать @tenderly/actions-test двумя способами для поддержки процесса разработки:
  • Использовать в автоматизированных тестах (рекомендуется).
  • Создать скрипт запуска на JavaScript/TypeScript.

Использование @tenderly/actions-test в тестах

Чтобы использовать @tenderly/actions-test в тестах, никаких дополнительных шагов не требуется. Импортируйте TestRuntime и события, необходимые для тестирования вашего Web3 Action, и проверяйте результаты. Следующие примеры показывают, как использовать пакет для вызова Web3 Action и передачи объекта события, который ожидают функции Action. Подробнее о типах событий, которые можно передать, см. в функциях, событиях и триггерах.

Рабочий пример

Ознакомьтесь с примером multisig-кошелька и тем, как он использует @tenderly/actions-test для локального запуска функции action.

Локальный запуск функции action

Пример: запуск функции Action в скрипте

Следующий пример показывает файл src/web3-actions-local/run.ts, который запускает три actions, передавая соответствующие события. Обратите внимание, что исходный файл Web3 Actions (src/actions/awesomeActions.ts) находится в соседнем к содержащему скрипт каталоге:

Шаг 1: напишите скрипт запуска

example.tsx
// File: src/web3-actions-local/run.ts
// web3-actions sources location: src/actions/awesomeActions.ts


/*
 * Running Web3 Actions code locally.
 * TestRuntime is a helper class that allows you to run the functions,
 * and set storage and secrets before running the function
 **/
const main = async () => {
  const testRuntime = new TestRuntime();

  testRuntime.context.secrets.put('multisig.DISCORD_URL', process.env.DISCORD_URL || '');

  await testRuntime.execute(everyDay, new TestPeriodicEvent());

  await testRuntime.execute(whenDappPosts, new TestWebhookEvent({ foo: 'bar' }));

  const te = new TestTransactionEvent();
  te.to = '0x1a22...';
  te.from = '0xc023...';

  await testRuntime.execute(onTxEvent, new TransactionEvent());
};

(async () => await main())();

Шаг 2: расширьте scripts в package.json содержащего проекта.

Вы можете добавить этот скрипт в файл package.json.
example
{
    ...
  "scripts": {
    ...
+   "local-w3a-run": "ts-node src/web3-actions-local/run.ts"
    ...
  }
  ...
}

Шаг 3: запустите скрипт

example
yarn local-w3a-run