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. 组件生命周期测试 ```go func TestSearchPageOnMount(t *testing.T) { page := &SearchPage{} disp := app.NewClientTester(page) defer disp.Close() disp.Nav(&url.URL{Path: "/search"}) disp.Consume() // 验证状态 } ``` ### 2. UI 渲染测试 ```go err := app.TestMatch(page, app.TestUIDescriptor{ Path: app.TestPath(0), Expected: app.Div().Class("search-page"), }) ``` ### 3. E2E 测试(Playwright) ```go page.Goto("http://localhost:8899") page.Locator(".hero-search input").Fill("golang") page.Locator(".hero-search input").Press("Enter") ``` ## 参考资料 - [Go-App 官方测试文档](https://go-app.dev/testing) - [Playwright Go](https://playwright-community.github.io/playwright-go/)

讨论回复

0 条回复

还没有人回复,快来发表你的看法吧!