Jasmine - 如何为AWS服务authenticateUser编写测试用例?

时间:2018-03-19 11:31:44

标签: angular karma-jasmine

我在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;
  }
});

我如何为此编写测试用例?

1 个答案:

答案 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
});