茉莉花单元测试,ActivatedRoute上的.subscribe问题

时间:2018-06-28 16:24:24

标签: angular unit-testing jasmine angular-ui-router

背景:我们最近升级到了angular 6,我们使用的是RXJS 6.1.0,rxjs-compat 6.1.0和jasmine-core 2.99.1。我们的测试已经被破坏了一下,所以我不确定该测试何时开始失败。

问题:每当我运行单元测试时,我在第一个测试中都会遇到此错误。

TypeError: this.activatedRoute.paramMap.subscribe is not a function



前言:现在,当您使用以下代码段时。它创建一个带有paramMap值的模拟路由。应该使该函数返回指定的值,在这种情况下,该类型为Number的Observable。

component.spec.ts

mockRoute = jasmine.createSpyObj('mockRoute', ['paramMap']);
(<any>mockRoute.paramMap).and.returnValue(of({ orderId }));
sut = new ContractSchedulesComponent(<Store<AppState>><any>mockStore, 
      actions, mockRoute, null);
sut.ngOnInit();

这是它失败的代码段:

component.ts

ngOnInit() {
    const routeSub = this.activatedRoute.paramMap.subscribe(paramMap => {
            this.orderId = paramMap['params']['orderId']; 



我知道它失败了,因为paramMap是一个函数,并且subscribe在该函数上不起作用,即使它应该通过单元测试返回一个Observable。

好奇这是否可能是茉莉花和较新版本的RXJS之间的错误。但是也许我做错了什么,但我看不到它。希望你们能提供任何帮助。另外,如果您需要任何代码的深入了解,我可以发布更多。谢谢!

0 个答案:

没有答案