根据承诺返回的Angular查询参数创建测试

时间:2019-01-14 18:34:14

标签: javascript angular unit-testing testing

我具有以下提供程序的TestBed配置:

{
provide: ActivatedRoute,
useValue: {
    queryParams: of({fooObservable: true})
  }
},

如何编写一个访问此查询参数并测试它是真还是假的茉莉花间谍?我已完成以下操作,但无法对其进行测试。 fooSpy = spyOn(this.ActivatedRoute.queryParams, 'queryParams');

1 个答案:

答案 0 :(得分:2)

这很棘手。这是我的操作方式:

const spyParamMap = jasmine.createSpyObj({get: null});
const mockActivatedRoute = { paramMap: of(spyParamMap) };

然后在提供程序数组中:{ provide: ActivatedRoute, useValue: mockActivatedRoute }

最后在测试中:

spyParamMap.get.and.returnValue('tFilename');
fixture.detectChanges();

在我的ngOnInit()中,我有以下代码段:

this.route.paramMap.subscribe(params => {
    this.dlFilename = params.get('download');
    if (this.dlFilename) {
         // logic for if a filename is passed
    }

所以我可以将结果传递到params.get()并在if内测试我的逻辑。

我希望这会有所帮助。