我的 Angular 组件依赖于使用解析器服务设置数据参数的激活路由。对于我的单元测试,我喜欢模拟它,如下所示:
activatedRouteStub = {
data: {
subscribe: (fn: (value: Data) => void) => fn({
someObject: SomeObjectMock // hard coded JSON value
}),
}
};
TestBed.configureTestingModule({
declarations: [SomeComponent],
providers: [
{ provide: ActivatedRoute, useValue: activatedRouteStub }
]
});
route = fixture.debugElement.injector.get(ActivatedRoute);// where route is in an instance of ActivatedRoute that is injected into SomeComponent as a dependency
这对于依赖于activatedRoute 的这种行为的初始测试集很有效。但是现在,我需要更改实际返回的内容,基本上,我需要使用修改后的 SomeObjectMock 并将其设置为 someObject。
而且我对如何做到这一点缺乏想法,我尝试过以下操作:
route = {
data: {
subscribe: (fn: (value: Data) => void) => fn({
someObject: SomeObjectMock // hard coded JSON value
}),
}
};
以前,当我对一个简单的服务进行存根时,这已经奏效了,更改方法的定义以返回不同的值是相当微不足道的。
任何建议/指针?