|
26 | 26 |
|
27 | 27 | ## 任务 3: 工具函数单元测试 |
28 | 28 |
|
29 | | -- [ ] 3.1 编写 `call-site.ts` 测试 |
| 29 | +- [x] 3.1 编写 `call-site.ts` 测试 |
30 | 30 |
|
31 | 31 | - 测试 `CallSite` 类的所有方法 |
32 | 32 | - 迁移现有测试到新框架 |
33 | 33 |
|
34 | | -- [ ] 3.2 编写 `stack.ts` 测试 |
| 34 | +- [x] 3.2 编写 `stack.ts` 测试 |
35 | 35 |
|
36 | 36 | - 测试 `getStackFrames` 函数 |
37 | 37 | - 测试 `initiatorStackPipe` 函数 |
38 | 38 | - 迁移现有测试到新框架 |
39 | 39 |
|
40 | | -- [ ] 3.3 编写 `header.ts` 测试 |
| 40 | +- [x] 3.3 编写 `header.ts` 测试 |
41 | 41 |
|
42 | 42 | - 测试所有头部处理函数 |
43 | 43 | - 测试边界情况 |
44 | 44 |
|
45 | | -- [ ] 3.4 编写 `json.ts` 测试 |
| 45 | +- [x] 3.4 编写 `json.ts` 测试 |
46 | 46 |
|
47 | 47 | - 测试 `jsonParse` 函数 |
48 | 48 | - 测试有效/无效 JSON 输入 |
49 | 49 |
|
50 | | -- [ ] 3.5 编写 `map.ts` 测试 |
| 50 | +- [x] 3.5 编写 `map.ts` 测试 |
51 | 51 |
|
52 | 52 | - 测试 `headersToObject` 函数 |
53 | 53 | - 测试各种 Headers 输入 |
54 | 54 |
|
55 | | -- [ ] 3.6 编写 `generate.ts` 测试 |
| 55 | +- [x] 3.6 编写 `generate.ts` 测试 |
56 | 56 |
|
57 | 57 | - 测试 `generateUUID` 函数唯一性 |
58 | 58 | - 测试 `generateHash` 函数一致性 |
59 | 59 |
|
60 | | -- [ ] 3.7 编写 `file.ts` 测试 |
| 60 | +- [x] 3.7 编写 `file.ts` 测试 |
61 | 61 |
|
62 | 62 | - 测试 `unlinkSafe` 函数 |
63 | 63 | - 测试文件不存在时的静默处理 |
64 | 64 |
|
65 | | -- [ ] 3.8 编写 `process.ts` 测试 |
| 65 | +- [x] 3.8 编写 `process.ts` 测试 |
66 | 66 |
|
67 | 67 | - 测试 `sleep` 函数 |
68 | 68 | - 测试 `checkMainProcessAlive` 函数 |
69 | 69 |
|
70 | | -- [ ] 3.9 编写 `common.ts` 测试 |
| 70 | +- [x] 3.9 编写 `common.ts` 测试 |
71 | 71 | - 测试 `RequestDetail` 类 |
72 | 72 | - 迁移现有测试到新框架 |
73 | 73 |
|
74 | 74 | ## 任务 4: 主线程代码单元测试 |
75 | 75 |
|
76 | | -- [ ] 4.1 编写 `core/index.ts` 测试 |
| 76 | +- [x] 4.1 编写 `core/index.ts` 测试 |
77 | 77 |
|
78 | 78 | - 测试 `register` 函数 |
79 | 79 | - 测试请求拦截注册流程 |
80 | 80 |
|
81 | | -- [ ] 4.2 编写 `core/fetch.ts` 测试 |
| 81 | +- [x] 4.2 编写 `core/fetch.ts` 测试 |
82 | 82 |
|
83 | 83 | - 测试 `proxyFetch` 函数 |
84 | 84 | - 测试 `fetchProxyFactory` 函数 |
85 | 85 |
|
86 | | -- [ ] 4.3 编写 `core/request.ts` 测试 |
| 86 | +- [x] 4.3 编写 `core/request.ts` 测试 |
87 | 87 |
|
88 | 88 | - 测试 `requestProxyFactory` 函数 |
89 | 89 | - 测试 HTTP/HTTPS 请求代理 |
90 | 90 |
|
91 | | -- [ ] 4.4 编写 `core/fork.ts` 测试 |
| 91 | +- [x] 4.4 编写 `core/fork.ts` 测试 |
92 | 92 |
|
93 | 93 | - 测试 `MainProcess` 类 |
94 | 94 | - 测试子进程通信 |
95 | 95 |
|
96 | | -- [ ] 4.5 编写 `core/undici.ts` 测试 |
| 96 | +- [x] 4.5 编写 `core/undici.ts` 测试 |
97 | 97 |
|
98 | 98 | - 测试 `undiciFetchProxy` 函数 |
99 | 99 | - 测试 undici fetch 拦截 |
100 | 100 |
|
101 | | -- [ ] 4.6 编写 `core/hooks/` 测试 |
| 101 | +- [x] 4.6 编写 `core/hooks/` 测试 |
102 | 102 |
|
103 | 103 | - 测试 `cell.ts` 中的 Cell 类 |
104 | 104 | - 测试 `useAbortRequest.ts` |
105 | 105 | - 测试 `useRegisterRequest.ts` |
106 | 106 | - 测试 `useRequestPipe.ts` |
107 | 107 |
|
108 | | -- [ ] 4.7 编写 `core/ws/` 测试 |
| 108 | +- [x] 4.7 编写 `core/ws/` 测试 |
109 | 109 | - 测试 `buffer-util.ts` |
110 | 110 | - 测试 `constants.ts` |
111 | 111 | - 测试 `limiter.ts` |
|
115 | 115 |
|
116 | 116 | ## 任务 5: 子线程代码单元测试 |
117 | 117 |
|
118 | | -- [ ] 5.1 编写 `fork/request-center.ts` 测试 |
| 118 | +- [x] 5.1 编写 `fork/request-center.ts` 测试 |
119 | 119 |
|
120 | 120 | - 测试 `RequestCenter` 类 |
121 | 121 | - 测试插件加载和消息分发 |
122 | 122 |
|
123 | | -- [ ] 5.2 编写 `fork/resource-service.ts` 测试 |
| 123 | +- [x] 5.2 编写 `fork/resource-service.ts` 测试 |
124 | 124 |
|
125 | 125 | - 测试 `ResourceService` 类 |
126 | 126 | - 测试 `ScriptMap` 类 |
127 | 127 |
|
128 | | -- [ ] 5.3 编写 `fork/devtool/` 测试 |
| 128 | +- [x] 5.3 编写 `fork/devtool/` 测试 |
129 | 129 |
|
130 | 130 | - 测试 `DevtoolServer` 类 |
131 | 131 | - 测试 `BaseDevtoolServer` 类 |
132 | 132 |
|
133 | | -- [ ] 5.4 编写 `fork/module/` 测试 |
| 133 | +- [x] 5.4 编写 `fork/module/` 测试 |
134 | 134 |
|
135 | 135 | - 测试 `common.ts` 中的插件工具 |
136 | 136 | - 测试 `health` 插件 |
137 | 137 | - 测试 `network` 插件 |
138 | 138 | - 测试 `debugger` 插件 |
139 | 139 | - 测试 `websocket` 插件 |
140 | 140 |
|
141 | | -- [ ] 5.5 编写 `fork/pipe/` 测试 |
| 141 | +- [x] 5.5 编写 `fork/pipe/` 测试 |
142 | 142 | - 测试 `BodyTransformer` 类 |
143 | 143 | - 测试 `RequestHeaderPipe` 类 |
144 | 144 |
|
145 | 145 | ## 任务 6: CDP 协议正确性测试 |
146 | 146 |
|
147 | | -- [ ] 6.1 编写 HTTP 请求生命周期顺序测试 |
| 147 | +- [x] 6.1 编写 HTTP 请求生命周期顺序测试 |
148 | 148 |
|
149 | 149 | - 验证 `Network.requestWillBeSent` → `Network.responseReceived` → `Network.dataReceived` → `Network.loadingFinished` 顺序 |
150 | 150 | - 使用属性测试验证任意请求的消息顺序 |
151 | 151 |
|
152 | | -- [ ] 6.2 编写 WebSocket 生命周期顺序测试 |
| 152 | +- [x] 6.2 编写 WebSocket 生命周期顺序测试 |
153 | 153 |
|
154 | 154 | - 验证 WebSocket 相关 CDP 消息的正确顺序 |
155 | 155 | - 测试握手、帧传输、关闭的完整流程 |
156 | 156 |
|
157 | | -- [ ] 6.3 编写 requestId 一致性测试 |
| 157 | +- [x] 6.3 编写 requestId 一致性测试 |
158 | 158 |
|
159 | 159 | - 验证同一请求的所有消息中 requestId 一致 |
160 | 160 | - 验证 requestId 全局唯一性 |
161 | 161 |
|
162 | | -- [ ] 6.4 编写 timestamp 单调递增测试 |
| 162 | +- [x] 6.4 编写 timestamp 单调递增测试 |
163 | 163 |
|
164 | 164 | - 验证同一请求的消息序列中 timestamp 单调递增 |
165 | 165 | - 使用属性测试验证任意消息序列 |
166 | 166 |
|
167 | | -- [ ] 6.5 编写 Debugger 消息正确性测试 |
| 167 | +- [x] 6.5 编写 Debugger 消息正确性测试 |
168 | 168 |
|
169 | 169 | - 验证 `Debugger.scriptParsed` 消息格式 |
170 | 170 | - 验证 `Debugger.getScriptSource` 响应正确性 |
171 | 171 |
|
172 | | -- [ ] 6.6 编写 CDP 响应格式测试 |
| 172 | +- [x] 6.6 编写 CDP 响应格式测试 |
173 | 173 |
|
174 | 174 | - 验证带 id 的请求响应包含相同 id |
175 | 175 | - 验证 result/error 字段格式 |
176 | 176 |
|
177 | | -- [ ] 6.7 编写 initiator 调用栈测试 |
| 177 | +- [x] 6.7 编写 initiator 调用栈测试 |
178 | 178 | - 验证 callFrames 包含有效位置信息 |
179 | 179 | - 验证 scriptId 正确关联 |
180 | 180 |
|
181 | 181 | ## 任务 7: 属性测试实现 |
182 | 182 |
|
183 | | -- [ ] 7.1 实现 Property 7: JSON 解析往返一致性 |
| 183 | +- [x] 7.1 实现 Property 7: JSON 解析往返一致性 |
184 | 184 |
|
185 | 185 | - 使用 fast-check 生成任意有效 JSON |
186 | 186 | - 验证解析后再序列化的等价性 |
187 | 187 |
|
188 | | -- [ ] 7.2 实现 Property 8: Headers 转换完整性 |
| 188 | +- [x] 7.2 实现 Property 8: Headers 转换完整性 |
189 | 189 |
|
190 | 190 | - 使用 fast-check 生成任意 Headers |
191 | 191 | - 验证转换后包含所有原始键值对 |
192 | 192 |
|
193 | | -- [ ] 7.3 实现 Property 9: UUID 唯一性 |
| 193 | +- [x] 7.3 实现 Property 9: UUID 唯一性 |
194 | 194 |
|
195 | 195 | - 生成大量 UUID 验证唯一性 |
196 | 196 | - 使用属性测试验证 |
197 | 197 |
|
198 | | -- [ ] 7.4 实现 Property 10: Hash 一致性 |
| 198 | +- [x] 7.4 实现 Property 10: Hash 一致性 |
199 | 199 |
|
200 | 200 | - 验证相同输入产生相同 hash |
201 | 201 | - 验证不同输入产生不同 hash |
202 | 202 |
|
203 | | -- [ ] 7.5 实现 Property 11: RequestHeaderPipe 大小写不敏感 |
| 203 | +- [x] 7.5 实现 Property 11: RequestHeaderPipe 大小写不敏感 |
204 | 204 |
|
205 | 205 | - 使用 fast-check 生成任意头部名称 |
206 | 206 | - 验证大小写不敏感查询 |
207 | 207 |
|
208 | | -- [ ] 7.6 实现 Property 13-19: CDP 协议属性测试 |
| 208 | +- [x] 7.6 实现 Property 13-19: CDP 协议属性测试 |
209 | 209 | - 实现 HTTP 请求生命周期消息顺序属性测试 |
210 | 210 | - 实现 WebSocket 生命周期消息顺序属性测试 |
211 | 211 | - 实现 requestId 一致性属性测试 |
212 | 212 | - 实现 timestamp 单调递增属性测试 |
213 | 213 |
|
214 | 214 | ## 任务 8: 覆盖率验证和文档 |
215 | 215 |
|
216 | | -- [ ] 8.1 运行完整测试套件 |
| 216 | +- [x] 8.1 运行完整测试套件 |
217 | 217 |
|
218 | 218 | - 执行所有测试 |
219 | 219 | - 生成覆盖率报告 |
220 | 220 |
|
221 | | -- [ ] 8.2 验证 100% 覆盖率 |
| 221 | +- [x] 8.2 验证 100% 覆盖率 |
222 | 222 |
|
223 | 223 | - 检查 src/core/ 覆盖率 |
224 | 224 | - 检查 src/fork/ 覆盖率 |
225 | 225 | - 检查 src/utils/ 覆盖率 |
226 | 226 | - 检查 src/common.ts 覆盖率 |
227 | 227 |
|
228 | | -- [ ] 8.3 补充缺失的测试 |
| 228 | +- [x] 8.3 补充缺失的测试 |
229 | 229 | - 根据覆盖率报告补充测试 |
230 | 230 | - 确保所有分支都被覆盖 |
0 commit comments