Ich versuche, eine Bibliothek zu testen, die WebSockets verwendet. Ich versuche, den Websocket mit dem folgenden Code zu verspotten. Die Bibliothek ROSController
nutzt Web Sockets, aber ich halte das im Scherz WebSocket is not defined.
Mocking WebSocket in Jest
import { ROSController } from '../ROSController.jsx';
var socketMock;
var windowMock;
var address = 'ws://test.address';
beforeAll(function() {
var WebSocket = jasmine.createSpy();
WebSocket.and.callFake(function (url) {
socketMock = {
url: url,
readyState: WebSocket.CONNECTING,
send: jasmine.createSpy(),
close: jasmine.createSpy().and.callFake(function() {
socketMock.readyState = WebSocket.CLOSING;
}),
// methods to mock the internal behaviour of the real WebSocket
_open: function() {
socketMock.readyState = WebSocket.OPEN;
socketMock.onopen && socketMock.onopen();
},
_message: function (msg) {
socketMock.onmessage && socketMock.onmessage({data: msg});
},
_error: function() {
socketMock.readyState = WebSocket.CLOSED;
socketMock.onerror && socketMock.onerror();
},
_close: function() {
socketMock.readyState = WebSocket.CLOSED;
socketMock.onclose && socketMock.onclose();
}
};
return socketMock;
});
WebSocket.CONNECTING = 0;
WebSocket.OPEN = 1;
WebSocket.CLOSING = 2;
WebSocket.CLOSED = 3;
windowMock = {
WebSocket: WebSocket
};
return WebSocket;
});
test('the subscription JSON produced is correct',() => {
console.log(WebSocket); //<----- It fails here
JSON.parse((new ROSController('')).callService('/test','', function(){}));
});
Wo wird 'Jasmin' deklariert? – jered
In meinem Paket.json? Ich lasse Jest einfach an der Wurzel des Projekts laufen. Dies ist im Ordner scripts/__ Tests__. Jest scheint gut zu laufen, ich kann einfach nicht die WebSocket Variable – cjds