Skip to content

Commit 02f514e

Browse files
authored
Merge pull request #598 from vitest-dev/sync-493735d0-1
docs(en): merge docs-cn/sync-docs into docs-cn/dev @ 493735d
2 parents 5a771ac + 24a44a0 commit 02f514e

File tree

2 files changed

+71
-12
lines changed

2 files changed

+71
-12
lines changed

guide/features.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -257,9 +257,9 @@ test('my types work properly', () => {
257257
使用 [`--shard`](/guide/cli#shard)[`--reporter=blob`](/guide/reporters#blob-reporter)标志在不同的计算机上运行测试。可以使用 `--merge-reports` 命令在 CI 管道的末尾合并所有测试结果:
258258

259259
```bash
260-
vitest --shard=1/2 --reporter=blob
261-
vitest --shard=2/2 --reporter=blob
262-
vitest --merge-reports --reporter=junit --coverage.reporter=text
260+
vitest --shard=1/2 --reporter=blob --coverage
261+
vitest --shard=2/2 --reporter=blob --coverage
262+
vitest --merge-reports --reporter=junit --coverage
263263
```
264264

265265
了解更多信息 [`性能优化 | 分片`](/guide/improving-performance#sharding)

guide/mocking.md

+68-9
Original file line numberDiff line numberDiff line change
@@ -431,18 +431,20 @@ it('can return a value multiple times', () => {
431431

432432
## 请求
433433

434-
因为 Vitest 运行在 Node 环境中,所以模拟网络请求是一件非常棘手的事情;由于没有办法使用 Web API,因此我们需要一些可以为我们模拟网络行为的包。推荐使用 [Mock Service Worker](https://mswjs.io/) 来进行这个操作。它可以模拟 `REST``GraphQL` 网络请求,并且与框架无关。
434+
因为 Vitest 运行在 Node 环境中,所以模拟网络请求是一件非常棘手的事情;由于没有办法使用 Web API,因此我们需要一些可以为我们模拟网络行为的包。推荐使用 [Mock Service Worker](https://mswjs.io/) 来进行这个操作。它可以模拟 `http``WebSocket``GraphQL` 网络请求,并且与框架无关。
435435

436436
Mock Service Worker (MSW) 的工作原理是拦截测试请求,让我们可以在不更改任何应用代码的情况下使用它。在浏览器中,它使用 [Service Worker API](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API) 。在 Node.js 和 Vitest 中,它使用 [`@mswjs/interceptors`](https://github.com/mswjs/interceptors) 库。要了解有关 MSW 的更多信息,请阅读他们的 [introduction](https://mswjs.io/docs/)
437437

438438
### 配置
439439

440-
您可以像下面一样在您的 [setup file](/config/#setupfiles)
440+
你可以像下面一样在你的 [setup file](/config/#setupfiles)
441441

442-
```js
442+
::: code-group
443+
444+
```js [HTTP Setup]
443445
import { afterAll, afterEach, beforeAll } from 'vitest'
444446
import { setupServer } from 'msw/node'
445-
import { HttpResponse, graphql, http } from 'msw'
447+
import { http, HttpResponse } from 'msw'
446448

447449
const posts = [
448450
{
@@ -460,6 +462,33 @@ export const restHandlers = [
460462
}),
461463
]
462464

465+
const server = setupServer(...restHandlers)
466+
467+
// 在所有测试之前启动服务器
468+
beforeAll(() => server.listen({ onUnhandledRequest: 'error' }))
469+
470+
// 所有测试完成后关闭服务器
471+
afterAll(() => server.close())
472+
473+
// 在每个测试后重置处理程序以实现测试隔离
474+
afterEach(() => server.resetHandlers())
475+
```
476+
477+
```js [GrapQL Setup]
478+
import { afterAll, afterEach, beforeAll } from 'vitest'
479+
import { setupServer } from 'msw/node'
480+
import { graphql, HttpResponse } from 'msw'
481+
482+
const posts = [
483+
{
484+
userId: 1,
485+
id: 1,
486+
title: 'first post title',
487+
body: 'first post body',
488+
},
489+
// ...
490+
]
491+
463492
const graphqlHandlers = [
464493
graphql.query('ListPosts', () => {
465494
return HttpResponse.json({
@@ -468,19 +497,49 @@ const graphqlHandlers = [
468497
}),
469498
]
470499

471-
const server = setupServer(...restHandlers, ...graphqlHandlers)
500+
const server = setupServer(...graphqlHandlers)
472501

473-
// 在所有测试之前启动服务器
502+
// Start server before all tests
474503
beforeAll(() => server.listen({ onUnhandledRequest: 'error' }))
475504

476-
// 所有测试后关闭服务器
505+
// Close server after all tests
477506
afterAll(() => server.close())
478507

479-
// 每次测试后重置处理程序 `对测试隔离很重要`
508+
// Reset handlers after each test for test isolation
480509
afterEach(() => server.resetHandlers())
481510
```
482511

483-
> 使用 `onUnhandleRequest: 'error'` 配置服务器可以确保即使某个请求没有相应的请求处理程序,也会抛出错误。
512+
```js [WebSocket Setup]
513+
import { afterAll, afterEach, beforeAll } from 'vitest'
514+
import { setupServer } from 'msw/node'
515+
import { ws } from 'msw'
516+
517+
const chat = ws.link('wss://chat.example.com')
518+
519+
const wsHandlers = [
520+
chat.addEventListener('connection', ({ client }) => {
521+
client.addEventListener('message', (event) => {
522+
console.log('Received message from client:', event.data)
523+
// Echo the received message back to the client
524+
client.send(`Server received: ${event.data}`)
525+
})
526+
}),
527+
]
528+
529+
const server = setupServer(...wsHandlers)
530+
531+
// Start server before all tests
532+
beforeAll(() => server.listen({ onUnhandledRequest: 'error' }))
533+
534+
// Close server after all tests
535+
afterAll(() => server.close())
536+
537+
// Reset handlers after each test for test isolation
538+
afterEach(() => server.resetHandlers())
539+
```
540+
:::
541+
542+
> Configuring the server with `onUnhandledRequest: 'error'` ensures that an error is thrown whenever there is a request that does not have a corresponding request handler.
484543
485544
### 了解更多
486545

0 commit comments

Comments
 (0)