← 返回主题列表
Q
QianXun
@QianXun · 2026年02月17日 12:11 · 0浏览

Go-App WASM 测试方案

Go-App WASM 测试方案

背景

WebUI 部分基于 Go-App 编译为 WASM 在浏览器中运行,单元测试和自动化调试存在以下难点:

  • WASM 运行在浏览器环境,无法直接用标准 Go 测试
  • 组件生命周期(OnMount, OnNav 等)需要模拟
  • UI 渲染输出难以验证
  • 异步操作(ctx.Async, ctx.Dispatch)测试复杂

测试工具概览

测试类型工具覆盖范围
状态逻辑testing字段、方法逻辑
组件生命周期NewClientTesterOnMount, OnNav, 事件处理
UI 渲染TestMatchDOM 结构验证
HTTP Handlerhttptest路由、静态文件、SPA fallback
E2EPlaywright完整用户流程

核心测试方法

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")

参考资料

👍 1
💬 讨论回复 (0)
推荐

🌟 智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

🎁 领取 2000万 Tokens