首页 > 解决方案 > Angular 模拟套接字服务

问题描述

我有一个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来获取我需要模拟它的数据,但它似乎不起作用

标签: angularunit-testingkarma-runnerstub

解决方案


使用useClass。使用时对我有用ngx-socket-io

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

推荐阅读