包
本地开发
复制页面
在桌面浏览器中使用 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中尝试服务器流程。参见 测试你的应用.
自动翻译。英语是真实来源。 阅读英文