Я тестирую код библиотеки для приложения Electron с Jest. Jest делает странные вещи с require
, что мешает тому, что Electron должен сделать ... Я думаю.
Spectron предназначен для того, чтобы позволить вам получить доступ к различным битам Electron из тестовой среды, позволяя создать приложение Electron с помощью библиотечных вызовов.
В конечном счете, мне нужно иметь возможность высмеивать require('electron')
с некоторыми реальными вещами из Electron (например, создание браузера windows) в основном для того, чтобы различные биты библиотеки могли работать как положено.
Вот как это выглядит должно работать:
в пакете. json:
"jest": {
"moduleNameMapper": {
"^electron$": "<rootDir>/test/mocks/electron.js"
}
}
тест / издевательства / электрон. js:
const Path = require("path")
const Application = require('spectron').Application
const electronPath = Path.join(__dirname, "../../node_modules/electron/dist/Electron.app/Contents/MacOS/Electron")
const app = new Application({ path: electronPath })
module.exports = app.electron
Согласно документам , app.electron
должен предоставлять доступ к тем же вещам, что и require('electron')
в нормальная работа.
Некоторые тесты:
const { BrowserWindow } = require("electron")
test("some test", () => {
const window = new BrowserWindow()
// ...
})
Однако, это не удается, поскольку app.electron
не определено, хотя само определение App
определено:
console.log test/mocks/electron.js:58
<ref *1> Application {
host: '127.0.0.1',
port: 9515,
quitTimeout: 1000,
startTimeout: 5000,
waitTimeout: 5000,
connectionRetryCount: 10,
connectionRetryTimeout: 30000,
nodePath: '~/.nvm/versions/node/v13.0.1/bin/node',
path: '~/electron-hello-world/node_modules/electron/dist/Electron.app/Contents/MacOS/Electron',
args: [],
chromeDriverArgs: [],
env: {},
workingDirectory: '~/electron-hello-world',
debuggerAddress: undefined,
chromeDriverLogPath: undefined,
webdriverLogPath: undefined,
webdriverOptions: {},
requireName: 'require',
api: Api { app: [Circular *1], requireName: 'require' },
transferPromiseness: [Function (anonymous)]
}
Не действительно уверен, где go отсюда. Ищу любые решения