我在UI级别使用Angular代码,并希望使用Jasmine测试以下组件代码:
this.poolData = {
UserPoolId: '<UserPoolId>',
ClientId: '<ClientId>'
};
const userPool = new AWSCognito.CognitoUserPool(this.poolData);
const authDetails = new AWSCognito.AuthenticationDetails({
Username: this.username,
Password: this.password
});
const cognitoUser = new AWSCognito.CognitoUser({
Username: this.username,
Pool: userPool
});
cognitoUser.authenticateUser(authDetails, {
onSuccess: (result) => {
this.cognitoIdToken = result.getIdToken().getJwtToken();
},
onFailure: (err) => {
alert('Invalid Username and/or Password');
return;
}
});
我如何为此编写测试用例?
答案 0 :(得分:1)
你没有。
您应该测试您的功能是否按预期工作,而不是图书馆运行良好。那不是你的工作。
你必须做的是嘲笑你的依赖。您似乎直接使用该库,因此请使用间谍。
import * as AWS from 'your-dependency';
it('should create a Cognito User Pool', () => {
spyOn(AWS.AWSCognito, 'CognitoUserPool');
feature.myMethod();
expect(AWS.AWSCognito.CognitoUserPool).toHaveBeenCalledWith(feature.poolData);
});
我会让你做其余的事,这只是一个例子。
如果您需要返回某些内容,例如在创建对象时,可以像这样模拟它:
spyOn(AWS.AWSCognito, 'CognitoUser').and.returnValue({
authenticateUser: (details, success, failure) => null
});