Я создаю приложение Electron. Я настраиваю тестирование с Mocha и Spectron. Мокко ошибается на линии
const filebrowser = require("../src/filebrowser.js")
в частности, в модуле файлового браузера в строке 2 происходит сбой, когда я пытаюсь запросить модуль fs узла:
const {remote} = require('electron');
const fs = remote.require('fs');
Я полагаю, что это как-то связано с областью процесса Main / Renderer в Electron, но я не понимаю, как заставить его правильно работать с Mocha. Как мне правильно требовать, чтобы мои модули были в тестовом файле Mocha, когда они полагаются на API Node, к которому я обычно обращаюсь через удаленный модуль электрона?
test / test.js (это пример кода Spectron со страницы github). Я запускаю его командой "mocha" через скрипт package.json (тест npm). Обратите внимание, что я даже еще не написал тест для моего модуля filebrowser, он завершается ошибкой в операторе require.
const Application = require('spectron').Application
const assert = require('assert')
const electronPath = require('electron') // Require Electron from the binaries included in node_modules.
const path = require('path')
const filebrowser = require("../src/filebrowser.js")
describe('Application launch', function () {
this.timeout(10000)
beforeEach(function () {
this.app = new Application({
path: electronPath,
// use the main.js file in package.json located 1 level above.
args: [path.join(__dirname, '..')]
})
return this.app.start()
})
afterEach(function () {
if (this.app && this.app.isRunning()) {
return this.app.stop()
}
})
it('shows an initial window', function () {
return this.app.client.getWindowCount().then(function (count) {
assert.equal(count, 1)
})
})
})
ЦСИ / filebrowser.js
const {remote} = require('electron');
const fs = remote.require('fs');
const Path = require('path');
module.exports = {
//note that I would be calling fs functions in here, but I never get that far because the error happens on remote.require('fs')
determineFiletype: function(currentDirectory, fileName){}
}