Use jest to mock electron in tests

Summary:
Replacing our custom electron-stubs transform with a mocked module.

This will now be the default impl for tests, and we can override it by mocking as needed.

Reviewed By: passy

Differential Revision: D17979659

fbshipit-source-id: a26994158d439fa7dc1ca38225294106fc4e1559
This commit is contained in:
John Knox
2019-10-18 10:06:29 -07:00
committed by Facebook Github Bot
parent 14dd792829
commit fdee0ef7b7
3 changed files with 32 additions and 6 deletions

23
__mocks__/electron.tsx Normal file
View File

@@ -0,0 +1,23 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
module.exports = {
remote: {
process: {
env: {},
},
app: {
getAppPath: process.cwd,
getVersion: () => '0.9.99',
relaunch: () => {},
exit: () => {},
},
getCurrentWindow: () => ({isFocused: () => true}),
},
};

View File

@@ -7,6 +7,13 @@
* @format * @format
*/ */
jest.mock('../fb-stubs/Logger');
try {
jest.mock('../fb/Logger');
} catch {
// Allowed to fail when fb modules are not present.
}
import Server from '../server'; import Server from '../server';
import {init as initLogger} from '../fb-stubs/Logger'; import {init as initLogger} from '../fb-stubs/Logger';
import reducers, {Store} from '../reducers/index'; import reducers, {Store} from '../reducers/index';

View File

@@ -63,12 +63,8 @@ function transform({filename, options, src}) {
if (process.env.BUILD_HEADLESS) { if (process.env.BUILD_HEADLESS) {
plugins.push(require('./electron-stubs.js')); plugins.push(require('./electron-stubs.js'));
plugins.push(require('./electron-requires.js'));
} else if (options.isTestRunner) {
if (process.env.USE_ELECTRON_STUBS) {
plugins.push(require('./electron-stubs.js'));
} }
} else { if (!options.isTestRunner) {
// Replacing require statements with electronRequire to prevent metro from // Replacing require statements with electronRequire to prevent metro from
// resolving them. electronRequire are resolved during runtime by electron. // resolving them. electronRequire are resolved during runtime by electron.
// As the tests are not bundled by metro and run in @jest-runner/electron, // As the tests are not bundled by metro and run in @jest-runner/electron,