Jest 是一个流行的 JavaScript 测试框架,它可以在 Node.js 中运行测试环境,也可以配置浏览器环境。在一些情况下,测试用例需要访问全局对象或函数,这时可以使用 Jest 的 globals 配置文件来设置全局变量。
什么是 Jest 的 globals 配置文件
在 Jest 的配置文件中,可以使用 globals
选项来指定一些全局变量。但在大型项目中,可能需要多次使用相同的全局变量,而每个测试文件都需要重复定义变量,这会导致代码冗余和可维护性下降。为了解决这个问题,可以使用 Jest 的 globals 配置文件,将全局变量统一定义在一个文件中。
如何配置 Jest 的 globals 配置文件
首先,在项目的根目录下,创建一个名为 globals.js
的文件。在这个文件中,可以导入需要使用的全局变量、函数或模块,并将它们暴露成一个对象,如下所示:
const axios = require('axios'); global.TEST_API_BASE_URL = 'https://example.com/api'; global.TEST_API_CLIENT = axios.create({ baseURL: TEST_API_BASE_URL }); global.TEST_UTIL = { sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms)), };
上述代码将 axios 模块、API 的基本 URL 和一个 sleep 辅助函数导入,并将它们暴露在全局对象中。可以随便定义全局变量的名字,但最好使用大写字母来表示它们是全局变量。
接着,在 Jest 配置文件中,加入以下代码,告诉 Jest 使用全局变量文件:
module.exports = { // ... globals: { 'TEST_API_BASE_URL': 'https://example.com/api', 'TEST_API_CLIENT': 'axios', 'TEST_UTIL': true, }, };
上述代码指定了三个全局变量的名字和值,其中 TEST_API_BASE_URL
和 TEST_API_CLIENT
的值需要在代码中使用,而 TEST_UTIL
只是一个标记,用于表示这个变量是一个辅助函数,不需要传入任何值。在真正编写测试用例时,可以使用全局变量文件中定义的变量,也可以忽略 TEST_UTIL
。
如何在测试用例中使用全局变量
为了使用全局变量,需要在测试用例文件头部导入它们:
const axios = require('axios'); const { TEST_API_BASE_URL, TEST_API_CLIENT, TEST_UTIL } = global;
这些变量就可以在测试用例中使用了。例如:
test('should fetch remote data', async () => { const response = await TEST_API_CLIENT.get('/users'); expect(response.data.length).toBeGreaterThan(0); });
这个测试用例发起了一个远程 API 请求,并断言返回的数据长度大于 0。
总结
使用 Jest 的 globals 配置文件,可以让测试用例中使用的全局变量集中管理,提高代码的可维护性和复用性。当需要在多个测试用例中使用相同的全局变量时,建议使用这个特性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64545467968c7c53b0847690