我怎样才能 运行 一个 shell 脚本作为 Jest 中的安装文件?
How can I run a shell script as a setup file in Jest?
像这样。目标是作为开玩笑设置的一部分启动和停止我的测试服务器,这样我就可以使用单个命令进行端到端测试。
"jest": {
"setupFiles": ["<rootDir>/TestScript.sh"]
}
我会亲自为将来试图解决与我相同问题的任何人回答这个问题。
Jest 配置有 globalSetup
和 globalTeardown
选项。该脚本将在所有测试开始时 运行 一次。
"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();
}
像这样。目标是作为开玩笑设置的一部分启动和停止我的测试服务器,这样我就可以使用单个命令进行端到端测试。
"jest": {
"setupFiles": ["<rootDir>/TestScript.sh"]
}
我会亲自为将来试图解决与我相同问题的任何人回答这个问题。
Jest 配置有 globalSetup
和 globalTeardown
选项。该脚本将在所有测试开始时 运行 一次。
"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();
}