我正在使用AWS cognito、Amplify和Angular 10。
如果用户未登录,我希望不呈现导航栏:
应用程序.html:
<ng-container *ngIf="isLoggedIn">
<navbar></navbar>
</ng-container>
应用程序.ts:
constructor() {
this.checkIfLoggedIn();
}
checkIfLoggedIn() {
Auth.currentUserInfo().then((userData) => {
if (userData) {
this.isLoggedIn = true;
}
});
}
这行得通。但是,我的单元测试(Karma / Jasmine)会引发错误:
Error: Amplify has not been configured correctly.
The configuration object is missing required auth properties.
这是因为我不知道如何Auth.currentUserInfo.then
正确模拟(尽管阅读了各种关于它的帖子,例如这样或那样)。
尝试:
1) 间谍
我以为会是这样的spyOn(Auth, 'currentUserInfo').and.returnValue(Promise.resolve(true));
2)模拟Auth
提供者
喜欢评论中的建议。
import { Auth } from 'aws-amplify';
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [AppComponent],
providers: [
{
provide: Auth,
useValue: { currentUserInfo: () => Promise.resolve('hello') },
},
],
}).compileComponents();
}
不幸的是,他们不会让错误消息消失。