我正在尝试为我的 Angular 7 应用程序配置用户登录,并且已经构建了大部分cognitoUser.authenticateUser()方法,但是在该onSuccess()方法中,我无法刷新 AWS 配置凭证,因为我在以下位置收到以下错误AWS.config.credentials.refresh():
“‘Credentials | CredentialsOptions’类型不存在‘refresh’属性。‘CredentialsOptions’类型不存在‘refresh’属性。”
auth.service.ts:
import { Injectable } from '@angular/core';
import { Router } from '@angular/router';
import * as AWS from 'AWS-sdk';
import { CognitoIdentityCredentials } from 'AWS-sdk';
import * as AmazonCognitoIdentity from 'amazon-cognito-identity-js';
import credentials from '../../../../server/credentials.json';
@Injectable({
providedIn: 'root'
})
export class AuthService {
user: AmazonCognitoIdentity.CognitoUser;
userPool;
userData;
isAuthenticated: boolean;
constructor(private router: Router) {
const poolData = {
UserPoolId: '*****',
ClientId: credentials.appClientId
}
this.userPool = new …Run Code Online (Sandbox Code Playgroud) amazon-web-services amazon-cognito aws-lambda angular angular7
我正在尝试使用 jest/enzyme 编写一个单元测试,该测试测试是否console.error()在catch()a 中被调用try/catch,但尝试这样做要么会在测试不成功时导致成功测试,要么会导致“预期的模拟函数被调用,但它没有被称为“错误。
测试功能:
export const playSound = (soundName, extension = 'wav') => {
try {
SoundPlayer.onFinishedPlaying(success => success);
SoundPlayer.playSoundFile(soundName, extension);
} catch (err) {
console.error(`Error playing sound '${soundName}':`, err);
return err;
}
};
Run Code Online (Sandbox Code Playgroud)
所以上面的参数只有一个参数soundName,它是一个字符串,我试图测试当没有参数传入时是否记录了控制台错误。
我最近尝试了下面的方法,这似乎离我们很远,并且错误地返回了通过的测试。
it('fails to play sound with no method arguments', async () => {
const consoleSpy = jest
.spyOn(console, 'error')
.mockImplementation(() => {});
try {
playSound();
expect(consoleSpy).not.toHaveBeenCalled();
} catch (err) {
expect(consoleSpy).toHaveBeenCalled();
}
});
Run Code Online (Sandbox Code Playgroud)