La mise en œuvre jest
tests instantanés dans une application electron-react
i courir dans une erreur:Unité-test app électronique-REACT avec Jest, TypeError: ne peut pas correspondre à contre 'non défini' ou 'null'
TypeError: Cannot match against 'undefined' or 'null'.
je peux » t trouver un moyen de faire fonctionner les tests lorsqu'un composant React
contient electron
éléments de navite tels que shell, Menu, MenuItem
.
J'ai essayé passer shell
comme un accessoire, comme dans le code commenté dans Home.spec.j s, mais il n'y a pas de changement.
Home.js
import React, { Component } from 'react';
import { remote } from 'electron';
const { shell } = remote;
export default class Home extends Component {
openLink() {
shell.openExternal('https://www.facebook.com')
}
render() {
return (
<div>
<button onClick={() => this.openLink()}>
Open External
</button>
</div>
)
}
}
Home.spec.js
import React from 'react';
import renderer from 'react-test-renderer';
import Home from '../../app/components/Home';
// import { remote } from 'electron'
// const { shell } = remote;
describe('Counter component',() => {
it('should render snapshot',() => {
const component = renderer.create(
<Home />
//<Home shell={shell} />
)
const tree = component.toJSON()
expect(tree).toMatchSnapshot()
})
});
Est-ce que tout fonctionne si vous supprimez toutes les parties électroniques de votre appareil? – kontrollanten
Oui, la suppression des tests des pièces électroniques fonctionne bien. –
Okey. Ne serait-il pas préférable de garder les composants Electron à l'extérieur des composants React? Vous pouvez soit utiliser des répartiteurs et écouter des événements ou simplement écouter l'événement webviews 'new-window' pour lancer' openExternal'. – kontrollanten