我使用vitest模拟了http请求的REST服务:
// test/setup.ts
import { afterAll, afterEach, beforeAll } from 'vitest'
import { setupServer } from 'msw/node'
import { HttpResponse, graphql, http } from 'msw'
const posts = [
{
userId: 1,
id: 1,
title: 'first post title',
body: 'first post body',
},
// ...
]
export const restHandlers = [
http.get('https://demo.example/path/to/posts', () => {
return HttpResponse.json(posts)
}),
]
const server = setupServer(...restHandlers)
//#region 生命周期内启动停止服务器
// 在所有测试之前启动服务器
beforeAll(() => server.listen({ onUnhandledRequest: 'error' }))
// 所有测试后关闭服务器
afterAll(() => server.close())
// 每次测试后重置处理程序 `对测试隔离很重要`
afterEach(() => server.resetHandlers())
//#endregion
// test/msw.test.ts
import { describe, expect, it } from "vitest";
import axios from 'axios';
describe('msw.test.ts', () => {
it('shoudl worl', () => {
// 发送 GET 请求
axios.get('https://demo.example/path/to/posts')
.then(response => {
console.log(response.data);
expect(response.data.length).toBe(2)
})
.catch(error => {
console.error('发生错误:', error);
});
})
})
但是我运行:vitest的时候。
1、并没看到有:console.log(response.data);
这一行的执行呢?
2、请问是否是axios.get('https://demo.example/path/to/posts')
这个没有执行?
====
更新:
我使用async/await成功:
it('shoudl worl', async () => {
// 发送 GET 请求
const response = await axios.get('https://demo.example/path/to/posts')
请问,为何上述第一种方式不能成功呢?