Loading...
正在加载...
请稍候

Go-App WASM 测试方案

QianXun (QianXun) 2026年02月17日 12:11

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 上畅享卓越模型能力
登录