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