2017-08-15 6 views
1

Ich rufe WebSocket nie direkt an, es ist eine Abhängigkeit von Asteroid. Warum kann Jest das nicht laden? Dies ist auch ein Standard create-react-app Test, um die App zu überprüfen "rendert ohne Absturz". Aber die App lädt gut, obwohl der Jest-Test sagt, dass es abstürzen sollte.Jest referenceError 'ist nicht definiert'

Mein begehen: https://github.com/Falieson/typescript-react-asteroid-meteor/commit/ab640bee540f1f2f5da2f0fe7b4be58f75b83d28#commitcomment-23644562

> node scripts/test.js --env=jsdom --silent 

FAIL src/routes/App.test.tsx 
    ● Test suite failed to run 

    ReferenceError: WebSocket is not defined 

     at Asteroid.init (node_modules/asteroid/lib/base-mixins/ddp.js:46:67) 
     at node_modules/asteroid/lib/asteroid.js:72:33 
     at Array.forEach (native) 
     at new Asteroid (node_modules/asteroid/lib/asteroid.js:70:16) 
     at Object.<anonymous> (src/config/asteroid.ts:6:16) 
     at Object.<anonymous> (src/routes/Login.tsx:14:18) 
     at Object.<anonymous> (src/routes/App.tsx:19:15) 
     at Object.<anonymous> (src/routes/App.test.tsx:5:13) 
      at <anonymous> 
     at process._tickCallback (internal/process/next_tick.js:188:7) 

Test Suites: 1 failed, 1 total 
Tests:  0 total 
Snapshots: 0 total 
Time:  1.915s 

Vielen Dank für jede Hilfe

Antwort

1

Ich habe eine Zeit lang von Asteroid abgehört worden, bevor ich Sie heraus die websocket angeben können Sie im Konstruktor verwenden möchten wie also:

const asteroid = require('asteroid'); 
const WebSocket = require('ws'); 

const Connection = asteroid.createClass() 

const portal = new Connection({ 
    endpoint: 'ws://localhost:3000/websocket', 
    SocketConstructor: WebSocket // <-------------- HERE 
}) 
0

WebSocket Klasse nicht global in nodejs existiert, aber es funktioniert in Browsern. Sie sollten diese Klasse während des Testens global vortäuschen oder definieren. Ich habe noch nie dieses besondere Problem konfrontiert, aber ich glaube, Sie dies versuchen:

// in App.test.tsx 
const WebSocket = require('ws') 
global.WebSocket= WebSocket 

//your tests... 
+0

Danke, aber das hat das Problem nicht behoben – Falieson

Verwandte Themen