Angular模拟套接字服务

时间:2018-11-26 11:53:56

标签: angular unit-testing karma-runner stub

我有一个socketService,它在组件初始化以从服务器获取一些数据时使用。但是,我不能嘲笑它,因为它说

  

TypeError:this.socketService.send不是函数

export class SocketStub {
    send(message: ISocketRequest): Observable<any> {
        return of({"status": 200, "data": "success"});
    }
}

接受测试的提供商

providers: [{
    provide: SocketService,
    useValue: SocketStub
}]

以及之前

beforeEach(() => {
        socketService = TestBed.get(SocketService);
        fixture = TestBed.createComponent(UsersItemComponent);
        component = fixture.componentInstance;
        fixture.detectChanges();
    });

我要运行的一个测试是默认的“应该创建”测试。由于组件使用此socketService来获取数据,因此我需要对其进行模拟,但它似乎不起作用

1 个答案:

答案 0 :(得分:0)

使用 useClass 。使用ngx-socket-io

时对我有用
beforeEach(async(() => {
    TestBed.configureTestingModule({
    // ...
       providers: [{ provide: SocketService, useClass: SocketStub }],
    //...
})