Как запустить сценарий оболочки в качестве установочного файла в Jest? - PullRequest
0 голосов
/ 13 января 2020

Как то так. Цель состоит в том, чтобы запустить и остановить мой тестовый сервер в рамках настройки jest, чтобы я мог выполнить сквозное тестирование одной командой.

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

1 Ответ

0 голосов
/ 22 января 2020

Я отвечу на это сам для любого в будущем, кто пытается решить ту же проблему, что и я.

Jest config имеет опции globalSetup и globalTeardown. Этот скрипт будет запущен один раз в начале всех тестов.

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

В узле вы можете использовать API child_process для запуска сценариев оболочки из файла js. Я запустил мой как этот в моем установочном файле.

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();
}
...