Проверка в шутку, является ли значение параметра истинным или ложным

#node.js #jestjs #electron

#node.js #jestjs #электрон

Вопрос:

Я хочу провести простой тест шутки, чтобы проверить, devTools было ли оставлено включенным для приложения Electron. У меня есть эта функция в main.js :

 function createWindow () {
  win = new BrowserWindow({
    width: 1024,
    height: 728,
    backgroundColor: '#000000',
    webPreferences: {
        nodeIntegration: true,
        devTools: false
    },
    frame: false
  });
  

Я просто хочу сделать тест, чтобы увидеть, является ли DevTools false. Может ли jest просто прочитать эту конкретную переменную?

Ответ №1:

Да, вы можете получить доступ к параметрам, которые были переданы конструктору BrowserWindow, таким образом:

 win = new BrowserWindow( {
    webPreferences: {
        nodeIntegration: true,
        devTools: true
    },
});

console.log( win.webContents.browserWindowOptions.webPreferences.devTools );
// will print true
  

Обратите внимание, что вы можете получить значение, только если оно действительно отображается в параметрах вызова конструктора, в противном случае это undefined .

Далее обратите внимание, что это недокументировано: в электронных документах не упоминается webContents.browserWindowOptions . Я пробовал это с помощью Electron 10.1.0.

Комментарии:

1. Спасибо! Консоль. журнал работает, но я немного запутался в настройке main.test.js . Я только начинаю с Jest, вот моя попытка сделать main.test.js .

2. В этом коде есть несколько небольших проблем. createwindow должно быть createWindow и проверьте expect синтаксис еще раз, это не совсем правильно. Кроме того, вы проверяете возвращаемое значение функции, когда у нее нет инструкции return.

3. Да, я только что понял это после того, как скопировал и вставил все… но использовали ли вы module.exports = createWindow() ? Это выдает, Error: Cannot create BrowserWindow before app is ready когда я пытаюсь запустить приложение с npm start .

4. Мой ответ касается только чтения настроек BrowserWindow в Electron. К сожалению, я не знаю, как заставить ваши тесты работать! Мне кажется, это приводит к более широкому, более общему вопросу: как заставить Jest запускать приложение Electron с полным пользовательским интерфейсом.

Ответ №2:

Недавно я узнал о Spectron, и это позволяет вам тестировать приложения Electron. В их документации показано, что они используют Mocha, но я почти уверен, что вы можете заставить его работать с Jest. Мне больше не нужно проверять, включен ли DevTools в моем приложении Electron, но я публикую здесь для всех, кто хочет сделать что-то подобное.