如何在不使用TestBed的情况下在Angular中模拟ActivatedRoute

问题描述

问题很简单。我从未真正喜欢过原始测试在Angular中的工作原理(TestBed部分),所以我一直以经典的方式完成它:使用 ts-mockito 进行模拟。无需TestBed,无需配置,零混乱。我什至用Jest代替了Karma / Jasmine。

但是在嘲笑ActivatedRouter时,我总是遇到麻烦,因为我想很多人都在那里。我见过的一种解决方案是让一个对象具有ActivatedRouter拥有的大量属性,并替换您要模拟的属性的值。该解决方案很烦人,而且非常不可持续。

另一种解决方案被迫使用我不喜欢的TestBed并执行以下操作:

providers: [
        {
          provide: ActivatedRoute,useValue: {
            snapshot: {
              paramMap: {
                get: () => 'foo'
              },queryParamMap: {
                get: () => 'bar'
              }
            }
          }
        }
      ]

这个实际上非常好,但是正如我所说,它迫使您使用TestBed。因此,如何在不使用ActivatedRoute的情况下嘲笑TestBed的行为?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)