Я пытаюсь выполнить юнит-тестирование сервиса, в котором socket.io импортирован с использованием mock-socket . Я посмотрел на похожую проблему, такую как this one, и у меня не получается заставить ее работать со следующими.
import { TestBed, inject, async } from '@angular/core/testing';
import { SocketIO, Server } from 'mock-socket';
import { BackendService } from './backend.service';
describe('BackendService', () => {
/* setup for mock-socket in order to test socket.io */
const SERVER_URL = window.location.host;
const mockServer = new Server(SERVER_URL);
// setting up server mock
mockServer.on('connection', socket => {
mockServer.emit('server-message', 'test message 1');
});
beforeEach(() => {
TestBed.configureTestingModule({
imports: [ ],
providers: [ BackendService ]
});
jasmine.DEFAULT_TIMEOUT_INTERVAL = 30000;
});
it('tests simple connection and messaging works with mock-socket setup', async(inject([BackendService], (service: BackendService) => {
(window as any).io = SocketIO;
// setting up client
service.socket = io(window.location.host);
setTimeout(() => {
service.socket.on('connect', (message) => {
expect(message).toEqual('test message 1');
mockServer.stop();
});
}, 100);
})));
});
Кто-нибудь с этим сталкивался?
Я создал Stackblitz , чтобы воссоздать сценарий, если за ним легче следовать.