gpt4 book ai didi

angular - Jasmine 测试订阅服务级别可从 OnInit Angular 观察到

转载 作者:行者123 更新时间:2023-12-04 17:29:49 24 4
gpt4 key购买 nike

我正在测试一个在 ngOnInit 方法中有订阅的组件。在“野外”运行时工作正常,但测试失败,因为没有可用的订阅对象。我已尝试创建一个 stub svc 以在我的单元测试中构建可观察对象,但无法使其正常工作。

这是我的服务和组件代码(abrv):

组件

  ngOnInit() {
this.userSvc.user.subscribe(user => {
this.currentUser = user; //-- this.userSvc.user (which is an observable on that class) is available in the wild, but not when testing
})
}

用户服务

  //-- User Subscribe items
userSubject: BehaviorSubject<any> = new BehaviorSubject(null);
user = this.userSubject.asObservable(); // this is the property I'm subscribing to which gets set after login.

这是我的测试设置

//SvcStub
const usrSvcStub = {
user : {
FirstName: "Test",
LastName: "User",
Username: "testuser"
}
}

//Providers Config
providers: [
{provide: UserService, useValue: {usrSvcStub}}
]

当测试启动时,我可以通过调试看到它正在加载我的“StubSvc”,但用户未定义,我无法订阅它。有人能指出我正确的方向吗?下面的屏幕截图显示了它何时加载组件的 ngOnInit 函数并订阅可观察到的服务。

enter image description here

最佳答案

你能试试吗

const usrSvcStub = {
user : new BehaviorSubject<any>({
FirstName: "Test",
LastName: "User",
Username: "testuser"
})
}

关于angular - Jasmine 测试订阅服务级别可从 OnInit Angular 观察到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60780467/

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