gpt4 book ai didi

javascript - 仅模拟 Angular 服务的一种方法

转载 作者:行者123 更新时间:2023-12-02 23:40:24 27 4
gpt4 key购买 nike

我有一个 Angular 服务,其中一个方法监听状态更改并返回可观察值,但同一服务的其他方法执行转换逻辑:

ngOnInit() {
this.isLoading = true;
this.myService.stateListener().subscribe((res: any) => {
this.data = this.myService.transformModel(res);
this.isLoading = false;
this.cd.detectChanges();
}, (err) => {
this.errMessage = 'Data could not be loaded';
this.isLoading = false;
});
}

在测试中,我模拟状态监听器以返回特定的可测试数据,如下所示:

const mockService = jasmine.createSpyObj('myService', ['stateListener']);
mockService.stateListener.and.returnValue(of({
number: 107,
mock: someMock
}));

问题是因为我已经模拟了该服务,所以方法“transformerModel”不再存在(在模拟的服务上),因此绑定(bind)到组件的数据是“未定义”。

有没有办法只模拟返回的可观察对象(stateListener)而不模拟同一服务的转换器方法?

最佳答案

let testData={}// stubbed response of Observable or Model
let dataStub=fixture.debugElement.injector.get(MyService);
spyOn(dataStub, 'stateListener').and.returnValue(
Observable.of(testData)
);

您可以使用stubreturnValue以及Observable.of来 stub 它并返回可观察的。

关于javascript - 仅模拟 Angular 服务的一种方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56105397/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com