首页 > 解决方案 > 全局存储来自服务器的数据

问题描述

使用 jest 和 react-testing-libary。

我的服务器中有数据,要获取这些数据,我需要登录,然后获取它。有没有办法让这些数据在所有测试文件中都可用?

标签: javascriptreactjsjestjsmockingreact-testing-library

解决方案


我通常这样做的方式是使用文件beforeAll中的钩子setupTests.js。这样,beforeAll钩子内的代码将在每个测试文件运行之前运行,我每次都会得到新的数据。

get data in beforeAll async --> run test-file 1
get data in beforeAll async --> run test-file 2
...
...

我通常还使用afterAll钩子清理所有内容,以确保我的数据不会在正在执行的测试文件之间混淆。

示例代码如下:

// setupTests.js file

beforeAll(async () => {
  const response = await fetch("url-to-my-server");
  const data = await response.json();

  // store the data as a global variable by using global object
  global.sampleData = data;
});

// cleanup any data or resources below:
afterAll(()=> global.sampleData='');

然后在我的测试文件中,我可以像这样使用该数据:

test("renders soemthing", () => {
  const data = global.sampleData;
  expect(data).toBe({whatever-i-expect-it-to-be});
});

文档中的更多信息在这里


推荐阅读