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可用的面部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中尝试服务器流程。参见 测试你的应用.

自动翻译。英语是真实来源。 阅读英文

输入以搜索每一页、方法和端点。