繁体   English   中英

Angular5 Karma测试:Rxjs运算符不是函数

[英]Angular5 Karma test: Rxjs operator is not a function

我有一个使用mergeMap的组件(MyComponent)-它可以构建,运行并完成我想要的一切。 没问题 我删除了此示例的实际实现。

在Karma测试期间,我抛出了一个错误'service.$find(...).mergeMap is not a function' 我究竟做错了什么?

import {Observable} from "rxjs/Observable";

export component MyComponent {
  constructor(private service: Service) {
    let observable = service.$find().mergeMap(() => { return Observable.of() });
  }
}

我为测试模拟了此服务:service.mock.ts

export class MockService {
  $find() { return Observable.of() }
}

我在mycomponent.spec.ts中测试了此组件

describe("MyComponent", () => {
  beforeEach(() => {
    TestBed.configureTestingModule({
      providers: [{provide: Service, useClass: Mockservice}],
      declarations: [MyComponent]
    })
  }
  // setup and it("should create") ...

}

我尝试import {mergeMap} from "rxjs/Operators/mergeMap"; 在几个地方也是如此。

如果您使用Observable修补程序添加运算符,则需要从rxjs/add/operator/xyz添加它们:

import 'rxjs/add/operator/mergeMap';

对于Observable(或创建新Observable的Observable类上的静态方法):

import 'rxjs/add/observable/of';

或者,如果这仅用于您的测试,则可以从rxjs导入(例如,这rxjs/addrxjs/add加载所有补丁):

import { Observable } from "rxjs";

请注意,这将包括所有内容,因此不建议在生产中使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM