我怎样才能 运行 一个 shell 脚本作为 Jest 中的安装文件?

How can I run a shell script as a setup file in Jest?

像这样。目标是作为开玩笑设置的一部分启动和停止我的测试服务器,这样我就可以使用单个命令进行端到端测试。

"jest": {
  "setupFiles": ["<rootDir>/TestScript.sh"]
} 

我会亲自为将来试图解决与我相同问题的任何人回答这个问题。

Jest 配置有 globalSetupglobalTeardown 选项。该脚本将在所有测试开始时 运行 一次。

"jest": {
  "globalSetup": "<rootDir>/jestGlobalSetup.js"
}

在节点中,您可以使用来自 js 文件的 child_process API 到 运行 shell 脚本。 我 运行 在我的设置文件中是这样的。

import { spawn } from 'child_process';
import cwd from 'cwd';

export default async function setup() {
  process.stdout.write('Starting Server');

  // Run this command in shell.
  // Every argument needs to be a separate string in an an array.
  const command = 'foreman';
  const arguments = [
    'start', 
    '-p', 
    '3000', 
    '-f', 
    'Procfile.test',
  ];
  const options = { 
    shell: true, 
    cwd: cwd() 
  };

  const server = spawn(
    command, 
    arguments,
    options,
  );

  // Then I run a custom script that pings the server until it returns a 200.
  await serverReady();
}