使用socket.io实体模型对Angular 5进行单元测试
我正在尝试对使用导入的服务进行单元测试。我研究了类似的问题,比如一个,但我不能让它和下面的问题一起工作使用socket.io实体模型对Angular 5进行单元测试,angular,typescript,unit-testing,socket.io,jasmine,Angular,Typescript,Unit Testing,Socket.io,Jasmine,我正在尝试对使用导入的服务进行单元测试。我研究了类似的问题,比如一个,但我不能让它和下面的问题一起工作 import { TestBed, inject, async } from '@angular/core/testing'; import { SocketIO, Server } from 'mock-socket'; import { BackendService } from './backend.service'; describe('BackendService', () =
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);
})));
});
有人来过这里吗
我已经创建了一个脚本来重新创建场景,如果它使事情更容易理解的话。我通过更改为以下行解决了我的问题:
it('tests simple connection and messaging with mock-socket setup', async(done: DoneFn) => {
(window as any).io = SocketIO;
// setting up client
backendService.socket = io(window.location.host);
backendService.socket.on('server-message', (message) => {
console.log(message)
expect(message.message).toEqual('test message 1');
mockServer.stop();
done();
});
});
});
问题本身是因为你需要在手术完成后通知Jasmine
这是一个工作模式,以查看测试工作。我通过更改为以下行解决了问题:
it('tests simple connection and messaging with mock-socket setup', async(done: DoneFn) => {
(window as any).io = SocketIO;
// setting up client
backendService.socket = io(window.location.host);
backendService.socket.on('server-message', (message) => {
console.log(message)
expect(message.message).toEqual('test message 1');
mockServer.stop();
done();
});
});
});
问题本身是因为你需要在手术完成后通知Jasmine
这是一个可以看到测试工作的工作