gpt4 book ai didi

angular - 从测试中访问最终管道内的值

转载 作者:行者123 更新时间:2023-11-28 21:16:00 26 4
gpt4 key购买 nike

我有组件:

isLoading: boolean;
users: User[];
test: number = 1;

ngOnInit() {
this.isLoading = true;
this.userService.getUsers()
.pipe(
finalize(() => {
// Disable loading when complete
this.isLoading = false;
this.test = 5;
})
)
.subscribe(results => {this.users = results})
}

我已经对其进行了测试 (.spec.ts)

    it('should be 5 after ngOnInit', () => {
component.ngOnInit();
expect(component.test).toBe(5);
});

我收到测试“预期 1 为 5”的错误。为什么会出现这个错误,如果我在 ngOnInit 之后读取值,.finalize 会被忽略?我如何从 .finalize block 中获取值(value)。 fixture.detectChanges() 也无济于事。

最佳答案

可以这样测试:

it('should set test value to 5', () => {
const userService= TestBed.get(UserService);

userService.getUsers()
.pipe(
finalize(() => {
expect(component.test).toEqual(5);
} )
)
});

我为服务使用了模拟:

class MockUserService {
getUsers(): Observable<number> {
return of(1, 2, 3);
}
}

并在configureTestingModule中

            {provide: UserService , useValue: new MockUserService ()}

关于angular - 从测试中访问最终管道内的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58157975/

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