jestjs - 如何在某些条件检查之前退出 Jest 测试?

标签 jestjs ts-jest

我使用 Jest 来运行测试。 我正在启动一个测试服务器,它使用测试表来进行数据插入和读取。因此,我想要实现的目标是首先检查 beforeAll 运行环境是否是测试环境,就像我在服务器上部署时那样,这样如果出现一些错误,它就不会在生产数据库中运行测试在那里并且服务器不是测试服务器。 因此,为此,我有一个提供环境的端点,我想在 beforeAll 中调用该端点,然后如果环境是测试,则继续并执行测试用例,否则我不想运行测试用例。 我怎样才能在 Jest 中实现这一点? 下面是我想要运行的代码,但是 returnthrowprocess.exit 没有任何内容退出测试用例,并且所有测试都会运行。

beforeAll(async () => {
  const GET_ENVIRONMENT_QUERY = gql`
    query GetEnvironment {
      getEnvironment
    }
  `;
  const loggedInClient = createApolloClientInstance("LOGGEDIN");
  const response = await loggedInClient.query({
    query: GET_ENVIRONMENT_QUERY,
  });
  if (response.data.getEnvironment !== "TEST_") {
    console.log("Here it should exit");
    return;
  }
});

最佳答案

如果我的想法是正确的,您只想在环境为“测试”时运行测试,那么这听起来像是您可以在安装文件中完成的事情。

您可以在 jest.config 文件中进行如下配置:

{
    ...,
    globalSetup: `path/to/your/setup.js/file`,
    ...
}

jest docs 中查看有关此内容的更多信息.

beforeAll 代码传输到此文件,该文件将在运行任何测试之前运行。然后,如果环境不是您想要的环境,您可以在 setup.js 文件中简单地 process.exit(1) (可能向用户提供有用的消息) .

顺便说一句,我想补充一点,您确实应该在所有环境中运行测试 - 也许您需要的是数据库的 stub 和用于测试目的的其他服务,而不是当前的设置,但这是一个单独的问题。

关于jestjs - 如何在某些条件检查之前退出 Jest 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69644689/

相关文章:

javascript - 为什么这个组件无法安装?

javascript - 使用 create-react-app 通过 JEST 运行测试时不显示 TypeScript 错误

typescript - Jest (ESM) 在单元测试中从 React Native 加载文件时出现问题

jestjs - 如何使用 jest 测试 HttpService.Post 调用

react 原生,开 Jest ,ts-jest : ReferenceError: React is not defined

typescript - 如何在 tsconfig.json 上启用 typeRoots 的 typescript/expressjs 应用程序上运行 jest

javascript - 无法在基于 jest 和 vue-test-utils 的测试项目中使用 vue.js 的 ES6 模块

javascript - 使用 Jest 模拟基于 promise 的请求

reactjs - 我如何使用 Jest 和 React 测试库来测试它?

typescript - 开 Jest typescript 不使用 __mocks__ 作为 node_modules