LiaРазработчики

Пакеты

Создайте приложение в настольном браузере с помощью mockLia(), ложного Lia, который отвечает на каждый вызов тестовым игроком. Измените его ответы, отправьте события и отлаживайте каждое сообщение.

За пределами приложения Lia там'нет фрейм-моста, поэтому каждый вызов завершается с not_in_lia. mockLia() ставит воображаемый Lia на его место: он отвечает на каждый вызов так, как бы Lia , с тестовым игроком в тестовом режиме, поэтому ваше приложение работает в браузере настольного компьютера или в тестах.

#Включить

Вызовите его перед первым вызовом SDK, и только вне Lia:

import { init, isLia, mockLia } from '@lia-labs/sdk';

if (!isLia()) mockLia();

const me = await init(); // { player: { name: 'tester' }, mode: 'test', ... }

С пакетом фреймворка'тот же импорт, из этого пакета. Держите его вне производственных сборок с помощью вашего паковщика'разработчика, если вам нравится (if (import.meta.env.DEV && !isLia())).

#Что оно отвечает

ВызовОтветы макета
initТестовый игрок (tester) тестовый режим, английский, светлый, лист, уведомления доступны
payОплаченный платеж, ch_mock0001 и вверх
showAd и его ярлыкиПросмотренное видео (ad_mock), или показано промежуточное окно
confirm, showPopupДа, и первый кнопка
requestNotifications, inviteFriendРазрешено, приглашено
submitScore, leaderboardХранит ваш лучший результат и ранжирует вас первым
ХранилищеХранится в памяти для страницы'жизнь
biometricДоступные Face ID, аутентифицированные
Все остальноеЧто Lia отвечает, когда работает

#Измените его ответы

Пропустить init чтобы изменить, кто и как, и onMethod чтобы решить любой ответ самостоятельно. Верните значение для ответа, бросьте { code } чтобы провалить, или вызовите next() для макета'свой ответ:

mockLia({
  init: { language: 'ar', rtl: true, theme: 'dark', startParam: 'room-k3x9' },
  latency: 300, // ms before each answer, to see your loading states
  onMethod: (call, next) => {
    if (call.method === 'pay' && call.params.productId === 'gold-pack') throw { code: 'cancelled' };
    if (call.method === 'showAd') return { watched: false, shown: false, reason: 'no_ad' };
    return next();
  },
});

#Отправить события

Макет может отправлять любые из Lia'события, чтобы попробовать, как ваше приложение реагирует:

const mock = mockLia();
mock.event('theme', { colorScheme: 'dark', theme: { bg_color: '#09090B', text_color: '#F5F5F7' } });
mock.event('soundChanged', { on: false });
mock.event('startParam', { startParam: 'room-a81c' });
mock.event('mainButtonClicked');
mock.event('pause');

mock.calls список всех вызовов, которые ваша страница сделала, и mock.restore() удаляет макет.

#В тестах

Тот же мок делает тесты простыми (здесь с Vitest и jsdom):

import { afterEach, expect, it } from 'vitest';
import { init, mainButton, mockLia, resetForTests, resetStateForTests } from '@lia-labs/sdk';

afterEach(() => {
  resetForTests();
  resetStateForTests();
});

it('shows Buy once the player is in', async () => {
  const mock = mockLia();
  await init();
  mainButton.setParams({ text: 'Buy', isVisible: true });
  await Promise.resolve();
  expect(mock.calls.at(-1)).toMatchObject({ method: 'bottomButton', params: { text: 'Buy', visible: true } });
  mock.restore();
});

#Посмотреть все сообщения

setDebug(true) логирует каждый вызов, ответ и событие в консоль, внутри Lia также:

import { setDebug } from '@lia-labs/sdk';
setDebug(true);
// [lia] call pay { productId: 'extra-lives' }
// [lia] event pause undefined
// [lia] answer pay { id: 7, ok: true, result: { chargeId: 'ch_…', productId: 'extra-lives' } }

Передайте вторым аргументом, чтобы отправить их в ваш собственный журнал, что помогает внутри Lia, где есть'нет веб-инспектора: setDebug(true, { log: send, warn: send, error: send }).

#Ваш сервер

Макет'сессия (lias_mock) не'не один Lia подписан, поэтому /session/verify говорит, что не'не действителен. Дайте вашему серверу путь разработки, или попробуйте серверные потоки внутри Lia как тестировщик. См. Тестирование вашего приложения.

Автоматически переведено. Английский — источник истины. Читать на английском

Введите, чтобы искать по каждой странице, методу и точке окончания.