我正在使用 jest 运行一个使用 Spectron 启动 Electron 应用程序的测试脚本。加载我的 babel 配置的正确方法是什么?通常我这样启动应用程序:npx electron -r @babel/register .
(npm start in package.json)
我使用 Spectron 的测试脚本尝试像这样初始化它:
import { Application } from 'spectron';
const app = new Application({
path: 'node_modules/electron/dist/electron',
args: ["-r @babel/register", "src/main.js"],
chromeDriverArgs: ['--disable-dev-shm-usage', '--headless'],
chromeDriverLogPath: 'chromeDriver.log'
})
但是main.js
在第一个 import 语句中出现 SyntaxError 崩溃。显然-r @babel/register
没有加载。
如果我在终端上手动path
构造一个命令:args
node_modules/electron/dist/electron -r @babel/register src/main.js
该应用程序启动得很好。但是查看 chromeDriver 日志,我看到这个命令可能与实际调用的不同。从日志:
"chromeOptions": {
"args": [ "spectron-path=node_modules/electron/dist/electron", "spectron-arg0=-r @babel/register", "spectron-arg1=src/main.js", "--disable-dev-shm-usage", "--headless" ]
我现在的 hacky 解决方法是specmain.js
使用以下内容制作脚本:
"use strict";
require("@babel/register");
require("./main")
然后我的测试脚本成功启动了应用程序,现在使用:
const app = new Application({
path: 'node_modules/electron/dist/electron',
args: ["src/specmain.js"],
chromeDriverArgs: ['--disable-dev-shm-usage', '--headless'],
chromeDriverLogPath: 'chromeDriver.log'
})
在 Spectron 的背景下,@babel/register
提前要求的好方法是什么?main.js