news 2026/9/16 15:50:46

Pascal Editor测试指南:Bun test与Turbo测试任务组织全解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Pascal Editor测试指南:Bun test与Turbo测试任务组织全解

Pascal Editor测试指南:Bun test与Turbo测试任务组织全解

【免费下载链接】editorOpen-source 3D architectural editor with a local CLI, MCP tools, and practical workflows for humans and AI agents.项目地址: https://gitcode.com/GitHub_Trending/editor93/editor

Pascal Editor 是一款开源 3D 建筑编辑器,本项目采用Bun test + Turborepo(Turbo)测试任务来组织整个 Monorepo 的测试。这篇 Pascal Editor 测试指南会用最短的篇幅讲清楚:600 多个测试文件如何分布、bun run test一条命令背后的执行链路,以及新手最容易踩的“裸bun test”陷阱。

一句话认识测试架构

Pascal Editor 是一个 Bun Workspaces + Turborepo 的 Monorepo,工作区包括 apps/、packages/、tooling/ 三大块,配置见根目录 package.json:

工作区职责测试脚本
packages/core场景 Schema、状态管理(无 UI)bun test src
packages/viewerReact Three Fiber 3D 渲染bun test src
packages/nodes墙、门、窗等建筑节点定义bun test
packages/editor编辑器组件与业务逻辑bun test src
packages/cli本地 CLI(给人类和 AI Agent 用)bun test src
packages/mcpMCP 工具层bun test
apps/editorNext.js 主应用bun test lib

全仓库共有616 个测试文件*.test.ts),全部与源码同目录存放(co-located),例如slab-polygon.ts旁边就是slab-polygon.test.ts,找测试、补测试都不迷路。

如何跑测试:三种粒度

一键全量:bun run test

在仓库根目录执行:

bun run test # 等价于 turbo run test

它通过 turbo.json 中的test任务驱动所有工作区。任务定义有两个关键点:

  • dependsOn: ["^build"]:先构建依赖包(多个包的测试从dist/导入产物);
  • outputs: []:测试不产生缓存输出,避免脏缓存。

单包测试:bun --cwd切换目录

只改了一个包时,不必跑全量:

bun --cwd packages/core run test bun --cwd apps/editor run test

单文件:直接指定路径

bun test apps/editor/lib/empty-graph-guard.test.ts

测试写法非常直白,以 empty-graph-guard.test.ts 为例——它守护“空场景覆盖写入 74 节点真实场景”这类事故,describe+test+expect三步走,新手可以直接照抄:

import { describe, expect, test } from 'bun:test' describe('isEmptyGraphOverwrite', () => { test('blocks a 0-node write over a populated server copy', () => { expect(isEmptyGraphOverwrite(0, 74)).toBe(true) }) })

新手避坑:为什么必须用bun run test而不是bun test

这是官方 CONTRIBUTING.md 里专门点名的一条:

bun run test,不要用裸bun test

原因:test是 Bun 自己的子命令,直接敲bun test根本走不到 package.json 的脚本。Bun 的收集器会扫描它能找到的所有文件——包括dist/下的编译副本——导致测试数量虚高、结果失真。而bun run test会进入 Turborepo 链路:先构建依赖、再按各包自己限定作用域的脚本(如bun test src)执行。

另外 bunfig.toml 的[test]段预加载了 scripts/bun-preload-three.ts,提前把reactthree求值一遍,绕开 R3F 生态 CJS/ESM 混用时的require() async module is unsupported竞态。你不需要关心它,但它解释了为什么这个项目能放心用 Bun 跑 React 相关测试。

进阶:性能基线与发布门禁

  • 基准测试packages/core提供bun run bench:registrybun run bench:schema,对 registry 与 schema 节点解析器 做性能回归;
  • 发布门禁:packages/cli 的prepublishOnly串起了check-types → build → test → 打包运行时 → smoke 冒烟,测试不过发不出去;
  • 浏览器测试:packages/viewer/tests/ 下有独立 README 说明的浏览器端用例,与bun test src的纯逻辑测试分工明确。

上手清单

  1. 安装 Bun 1.3+(Node 20.9+),bun install装依赖
  2. 全量验证用bun run test,日常开发用bun --cwd <包> run test
  3. 新增功能时在源码旁补一个同目录xxx.test.ts
  4. 提交 PR 前再跑一次bun run check(lint/format)+bun run test

掌握这套「Turbo 编排 + Bun 就近测试」的组织方式,你就能在 Pascal Editor 这个大型 Monorepo 里又快又稳地跑测试了。

【免费下载链接】editorOpen-source 3D architectural editor with a local CLI, MCP tools, and practical workflows for humans and AI agents.项目地址: https://gitcode.com/GitHub_Trending/editor93/editor

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/16 15:48:25

FPGA简易示波器设计:从触发逻辑到异步FIFO的完整Verilog实现

简介&#xff1a;一套基于 FPGA 与 Verilog 的简易数字存储示波器工程&#xff0c;适合电子工程、嵌入式及数字系统设计初学者&#xff0c;也适合教学实验和原型验证。项目已在 EP2C8Q208C8 上验证&#xff0c;覆盖数据采集、存储缓冲、触发控制、显示接口及时序分析等核心模块…

作者头像 李华
网站建设 2026/9/16 15:46:43

STM32模拟SPI驱动TLC3578实现8路±10V高精度采集

简介&#xff1a;针对STM32开发者&#xff0c;这份资源围绕TLC3578模数转换芯片&#xff0c;提供基于模拟SPI的驱动方案&#xff0c;解决8通道10V信号采集与单片机通信问题。资源共152个文件&#xff0c;整体4.35MB&#xff0c;包含H/C源文件、Keil工程文件、PDF说明文档、编译…

作者头像 李华
网站建设 2026/9/16 15:46:36

MATLAB中SA-PSO混合优化算法原理与神经网络训练实战

简介&#xff1a;本资源是一套面向MATLAB初学者与优化算法实践者的融合型算法实现代码包&#xff0c;聚焦于智能优化领域中模拟退火&#xff08;SA&#xff09;与粒子群&#xff08;PSO&#xff09;算法的协同改进思路&#xff0c;适用于高校课程设计、毕业设计及科研原型验证等…

作者头像 李华