Go-App WASM 测试方案
背景
WebUI 部分基于 Go-App 编译为 WASM 在浏览器中运行,单元测试和自动化调试存在以下难点:
- WASM 运行在浏览器环境,无法直接用标准 Go 测试
- 组件生命周期(OnMount, OnNav 等)需要模拟
- UI 渲染输出难以验证
- 异步操作(ctx.Async, ctx.Dispatch)测试复杂
测试工具概览
| 测试类型 | 工具 | 覆盖范围 |
|---|---|---|
| 状态逻辑 | testing |
字段、方法逻辑 |
| 组件生命周期 | NewClientTester |
OnMount, OnNav, 事件处理 |
| UI 渲染 | TestMatch |
DOM 结构验证 |
| HTTP Handler | httptest |
路由、静态文件、SPA fallback |
| E2E | Playwright |
完整用户流程 |
核心测试方法
1. 组件生命周期测试
func TestSearchPageOnMount(t *testing.T) {
page := &SearchPage{}
disp := app.NewClientTester(page)
defer disp.Close()
disp.Nav(&url.URL{Path: "/search"})
disp.Consume()
// 验证状态
}
2. UI 渲染测试
err := app.TestMatch(page, app.TestUIDescriptor{
Path: app.TestPath(0),
Expected: app.Div().Class("search-page"),
})
3. E2E 测试(Playwright)
page.Goto("http://localhost:8899")
page.Locator(".hero-search input").Fill("golang")
page.Locator(".hero-search input").Press("Enter")
参考资料
登录后可参与表态
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!
推荐
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。
领取 2000万 Tokens
通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力