Pacotes
Desenvolvimento local
Copiar página
Construa seu app em um navegador de desktop com mockLia(), um Lia falso que responde a todas as chamadas com um jogador de teste. Altere suas respostas, envie eventos e depure cada mensagem.
Fora do app Lia há's não tem ponte de frame, então toda chamada falha com not_in_lia. mockLia() coloca um Lia falso no seu lugar: ele responde a todas as chamadas da mesma forma que Lia faria, com um jogador de teste no modo de teste, então seu app todo roda em um navegador de desktop ou em testes.
#Ative-o
Chame antes da primeira chamada SDK, e apenas fora de Lia:
import { init, isLia, mockLia } from '@lia-labs/sdk';
if (!isLia()) mockLia();
const me = await init(); // { player: { name: 'tester' }, mode: 'test', ... }Com um pacote de framework, ele'mesmo import, daquele pacote. Mantenha-o fora das construções de produção com seu bundler'bandeira de desenvolvedor se você quiser (if (import.meta.env.DEV && !isLia())).
#O que ele responde
| Chamada | As respostas do mock |
|---|---|
init | Um jogador de teste (tester) modo de teste, inglês, claro, uma folha, notificações disponíveis |
pay | Uma cobrança paga, ch_mock0001 e acima |
showAd e seus atalhos | Um vídeo assistido (ad_mock), ou uma intersticial exibida |
confirm, showPopup | Sim, e o primeiro botão |
requestNotifications, inviteFriend | Permitido, convidado |
submitScore, leaderboard | Mantém seu melhor score e o classifica em primeiro lugar |
| Armazenamento | Mantido em memória para a página's vida. |
biometric | Face disponível ID, autenticado |
| Tudo mais | O que Lia responde quando funciona |
#Mude suas respostas
Passar init para mudar quem e como, e onMethod para decidir qualquer resposta você mesmo. Retorne um valor para responder, lance { code } para falhar, ou chame next() para o mock'seu próprio resposta:
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();
},
});#Enviar eventos
O mock pode enviar qualquer um dos Lia'eventos, para tentar como seu app reage:
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 lista todas as chamadas que sua página fez, e mock.restore() remove o mock.
#Em testes
O mesmo mock torna os testes simples (aqui com Vitest e 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();
});#Ver todas as mensagens
setDebug(true) registra todas as chamadas, respostas e eventos no console, dentro do Lia também:
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' } }Passe um segundo argumento para enviá-los ao seu próprio logger, o que ajuda dentro do Lia onde há's não tem inspetor web: setDebug(true, { log: send, warn: send, error: send }).
#Seu servidor
O mock'sessão (lias_mock) não'um Lia assinado, então /session/verify diz que não é'para válido. Dê um caminho de desenvolvimento ao seu servidor, ou tente fluxos de servidor dentro de Lia como um testador. Veja Testando seu app.
Traduzido automaticamente. O inglês é a fonte de verdade. Leia em inglês