javascript - Angular - 单元测试主题()?

标签 javascript angular typescript testing karma-runner

我有一个仅使用 Subject 的 Angular 服务,但我不确定如何为其编写单元测试。

我看到了[这个话题][1],但我觉得它没有太大帮助。

我试图模拟 next() 但我有点迷路了。

最佳答案

你应该监视 service.serviceMsg 而不是 service,因为 next() 方法似乎在 serviceMsg主题。

it('should catch what is emitted', () => {
    const nextSpy = spyOn(service.serviceMsg, 'next');
    service.confirm(ACTION);
    expect(nextSpy).toHaveBeenCalled();
});

编辑:

您还应该更改创建服务 实例的方式。您在代码中显示的内容仅适用于 component 实例创建

beforeEach(() => {
    TestBed.configureTestingModule({
      providers: [MessageService]
    });
    service = TestBed.get(MessageService); // get service instance
    httpMock = TestBed.get(HttpTestingController);
});

关于javascript - Angular - 单元测试主题()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52091882/

相关文章:

javascript - 砌体不适用于ajax响应

Angular 2 - 多语言支持

angular - 将MINUTES放在进度元素的Max属性中

Typescript 忽略 null 或 undefined 作为函数返回的可能性

angular - Jest 和 Serialize-ts Count 字段 : 的查找类型

javascript - 带引号的 JSON.stringify/parse 奇数

javascript - 如何在 jsrender 中检查数组为 null 或为空?

javascript - 在多个域之间共享一个 JavaScript 文件

angular - 是否可以在 Angular Material Tooltip 中包含一个列表?

javascript - 检查接口(interface)是否有属性?