Пакеты
Локальная разработка
Копировать страницу
Создайте приложение в настольном браузере с помощью 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 как тестировщик. См. Тестирование вашего приложения.
Автоматически переведено. Английский — источник истины. Читать на английском