[英]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/add
从rxjs/add
加载所有补丁):
import { Observable } from "rxjs";
请注意,这将包括所有内容,因此不建议在生产中使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.