这个问题很简单。我从来没有真正喜欢过原始测试在 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
?