ActivatedRouteSnapshot

ActivatedRouteSnapshot

我想为我的解析器编写一个单元测试,它需要在其构造函数中采用ActivatedRouteSnapshot,如下所示:

export class MyResolver {
  constructor () {
    // ...
  }

  resolve (private route: ActivatedRouteSnapshot) {
    callFoo(route.params.val);
  }
};

但是在我的单元测试中,用模拟数据提供激活的路由快照的最佳方法是什么?当我尝试仅使用所需的属性创建对象时,会出现一个无法将其强制转换为ActivateRouteSnapshot的错误:
it('should call foo', inject([MyResolver], async (myResolver: MyResolver) => {
  const mockRoute = {
    params: {
      val: '1234'
    };
  };

  sinon.spy(callFoo);
  myResolver.resolve(mockRoute); // This is the line that errors
  expect(callFoo.calledWith('1234')).to.be.true;
}));

错误:
Type '{ params: { val: string; }; }' cannot be converted to type 'ActivatedRouteSnapshot'.

我如何提供一个模拟的activatedroutesnapshot来传递给我的解析器?

最佳答案

我不确定这是否是最漂亮的解决方案,但您可以这样模拟路线:

let route = createSpyObj('Route', ['']);
route.params = {
  val: '1234'
}

关于angular - 在单元测试解析器时如何模拟ActivatedRouteSnapshot,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48389002/

10-15 17:10