【问题标题】:Angular mock socket serviceAngular 模拟套接字服务
【发布时间】:2018-11-26 11:53:56
【问题描述】:

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

【问题讨论】:

  • 在提供存根服务时尝试使用useClass 而不是useValue

标签: angular unit-testing karma-runner stub


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多