测试
@opentui/core/testing 提供一个默认不写入真实终端的渲染器。它直接使用 screenMode: "main-screen"、consoleMode: "disabled"、externalOutputMode: "passthrough" 和原生内存输出构造 CliRenderer。
import { createTestRenderer } from "@opentui/core/testing"
import { Text } from "@opentui/core"
const { renderer, renderOnce, captureCharFrame } = await createTestRenderer({ width: 40, height: 10 })
renderer.root.add(Text({ content: "Hello" }))
await renderOnce()
console.log(captureCharFrame())
renderer.destroy()
| 辅助工具 | 说明 |
|---|---|
renderer | CliRenderer 实例 |
renderOnce() | 运行一次渲染 |
flush() | 等待调度的渲染稳定 |
waitFor(predicate) | 重试直到条件通过 |
waitForFrame(predicate) | 针对捕获的帧文本进行重试 |
waitForVisualIdle() | 等待安静的原生帧 |
captureCharFrame() | 将当前字符帧读取为文本 |
captureSpans() | 读取带样式的 span 行和光标状态 |
externalOutput.takeText() | 读取捕获的 split-footer 输出事件 |
getNativeStats() | 读取原生渲染统计 |
resize(width, height) | 模拟终端大小调整 |
mockInput / mockMouse | 驱动键盘和鼠标输入 |
当测试需要真实输出传输而不是内存输出时,请使用带有自定义 stdin / stdout 流的 createCliRenderer()。