Quelqu'un at-il été en mesure de Highcharts de tests unitaires avec mocha. Tout fonctionne très bien lorsque nous déployons notre code, mais il semble qu'il ne soit pas possible de charger le package highchart en dehors du navigateur. Notre code repro est Typescript, donc nous utilisons ts-node pour transiter vers commonJS, et lancer des tests avec mocha et Domino pour simuler la fenêtre/document, que nous utilisons pour tester nos autres composants React.Erreur lors de l'importation Highchart à l'intérieur test unitaire mocha
Plus précisément, les effets secondaires de l'importation appelant déclenche la TypeError:
import * as _Highcharts from 'highcharts';
qui déclenche cette trace de la pile:
TypeError: Cannot set property 'hcTimezoneOffset' of undefined
at A (<MyPath>/node_modules/highcharts/highcharts.js:113:299)
at <MyPath>/node_modules/highcharts/highcharts.js:119:497
at <MyPath>/node_modules/highcharts/highcharts.js:119:502
at a (<MyPath>/node_modules/highcharts/highcharts.js:8:83)
at Object.<anonymous> (<MyPath>/node_modules/highcharts/highcharts.js:8:109)
at Module._compile (module.js:569:30)
at Module._extensions..js (module.js:580:10)
at Object.require.extensions.(anonymous function) [as .js] (<MyPath>/node_modules/ts-node/src/index.ts:373:14)
Ce qui fait référence à cet extrait de code.
<MyPath>/node_modules/highcharts/highcharts.js:113
a.defaultOptions.global,k=q.moment;if(g.timezone){if(k)return function(a){return-k.tz(a,g.timezone).utcOffset()};a.error(25)}return g.useUTC&&g.getTimezoneOffset}function A(){var g=a.defaultOptions.global,u,h=g.useUTC,e=h?"getUTC":"get",n=h?"setUTC":"set";a.Date=u=g.Date||q.Date;u.hcTimezoneOffset=h&&g.timezoneOffset;u.hcGetTimezoneOffset=C();u.hcMakeTime=function(a,c,e,b,n,g){var d;h?(d=u.UTC.apply(0,arguments),d+=m(d)):d=(new u(a,c,k(e,1),k(b,0),k(n,0),k(g,0))).getTime();return d};F("Minutes Hours Day Date Month FullYear".split(" "),
Le code est un peu difficile à suivre minified, mais ressemble à la cause racine est a.defaultOptions.global est indéfini pour une raison quelconque. Je suis en train de creuser plus loin, mais curieux si quelqu'un d'autre a eu une configuration similaire à travailler. Il est probable que notre fenêtre de test Domino porte à confusion le code higraphts.