Тестирование в проекте

Тестирование — критически важный этап разработки, который гарантирует, что ваши динамические сценарии работают корректно и обрабатывают все пограничные случаи. Платформа предоставляет несколько мощных инструментов для отладки.

Эта статья посвящена методам тестирования. Для глубокого понимания объекта context, его структуры и способов установки фактов, пожалуйста, обратитесь к основной документации: Обработка данных и доступ к контексту.

Основные инструменты тестирования

1. Дебаг-чат

Ваш главный инструмент — это дебаг-чат. Он не просто показывает ответы бота, но и предоставляет детальную информацию о том, как было обработано ваше сообщение: какое намерение распозналось, какие сущности были извлечены и с какой уверенностью.

2. Установка фактов вручную

Динамические сценарии часто зависят от контекста — данных о пользователе, которые обычно приходят по API. Чтобы не делать реальные API-запросы при каждом тесте, вы можете имитировать эти данные.

  • Как это работает: В дебаг-чате нажмите кнопку «Факты» и вставьте JSON-объект с данными, которые вы хотите добавить в сессию. Эти данные будут доступны в сниппетах через объект context.

  • Пример: Вы тестируете сценарий, который по-разному реагирует на обычных и VIP-пользователей. Вы можете легко проверить обе ветки, устанавливая нужный факт:

    // Тестируем ветку для VIP
    { "user_status": "vip" }
    // Тестируем ветку для обычного пользователя
    { "user_status": "regular" }

3. Вывод данных из сниппета

Чтобы понять, какие данные находятся внутри сниппета в момент выполнения, используйте следующие методы для вывода информации прямо в дебаг-чат.

Пример отладки сниппета

Предположим, вы получаете данные по API и хотите проверить, что приходит в ответ.

async function main(facts) {
  try {
    const response = await fetch('https://api.example.com/user/123');
    const userData = await response.json();

    // Способ 1: Выводим весь объект в чат для анализа
    // JSON.stringify() превращает объект в строку для корректного отображения.
    await mail.sendText(`Ответ от API: ${JSON.stringify(userData, null, 2)}`);

    // Способ 2: Используем console.log для вывода в консоль браузера
    // Это не будет видно пользователю, но поможет вам при отладке.
    console.log('Получены данные пользователя:', userData);

    // Основная логика сниппета
    const message = `Здравствуйте, ${userData.name}! Ваш баланс: ${userData.balance}$.`;
    await mail.sendText(message);

  } catch (error) {
    await mail.sendText('Произошла ошибка при получении данных.');
    console.error('Ошибка API:', error);
  } 
}

4. Проверка переменных в текстовых реакциях

Вы также можете быстро проверить значение любого факта или сущности, выведя его напрямую в текстовой реакции с помощью Mustache-синтаксиса ({{...}}).

  • Пример: После сниппета, который установил факт user_balance, добавьте текстовую реакцию со строкой:

    Отладка: Баланс пользователя - {{user_balance}}.

Последнее обновление