Files
ChronicleOfTheImmortalClan/tests/ui-render-0.1.36.test.ts
T
thzxx 73fa9eb7f2 test: 存储真链集成测试(MetonaSqlark memory 方言——非 mock)——save/load/export/slot 管理 6 种子全链
此前所有存量测试用 SaveDbDriver mock——真实 SQL 方言链从未被 vitest 覆盖(唯一 GUI 冒烟因环境不可用);
本测试直接注入 MeSqlark memory 后端:saveState→list→loadState→resume advance→exportAll→slot 管理面/remove;
为 0.1.36 三问题(推进崩溃/存档丢失)提供真实存储链防线;+1 套件
2026-08-24 21:59:00 +08:00

37 lines
1.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { describe, expect, it } from 'vitest'
import { renderToString } from 'react-dom/server'
import { createElement } from 'react'
import { World } from '../src/renderer/game/engine/runtime/World'
import { useGameStore } from '../src/renderer/ui/store'
import MarketPanel from '../src/renderer/ui/panels/MarketPanel'
function worldAt(seed: string, months: number): World {
const w = World.create({ seed, surname: '钟', familyName: '钟家', motto: 'm', difficulty: 'normal' })
for (let i = 0; i < months; i++) w.advanceMonth()
return w
}
describe('0.1.36 UI 渲染回归:市场面板三 tab', () => {
it.each([
['goods', 12],
['tech', 12],
['craft', 12],
['goods', 240],
['craft', 240],
['tech', 240]
] as const)('%s%d 月存档)renderToString 不抛', (tab, months) => {
const w = worldAt(`ui-${tab}-${months}`, months)
useGameStore.setState({ world: w } as never)
const Sub = (MarketPanel as unknown as { __module?: unknown })
const before = JSON.stringify(useGameStore.getState().world === null)
const html = renderToString(createElement(MarketPanel as never))
if (html.length === 0) console.log('[ui-null] world-null?', before)
expect(html.length).toBeGreaterThan(0)
// 切到 craft 再渲一遍(真点"定制"
useGameStore.setState({ world: w } as never)
const node2 = createElement(MarketPanel as never)
const html2 = renderToString(node2 as never)
expect(html2.length).toBeGreaterThan(100)
})
})