【问题标题】:Mock Test for AWS Secret Manager - JavaAWS Secret Manager 的模拟测试 - Java
【发布时间】:2021-08-16 19:51:48
【问题描述】:

我正在尝试使用 Mockito 测试 AWS SecretManager 调用,但是当我运行程序时,我得到了空指针异常。

@ExtendWith(MockitoExtension.class)
class XXXX{

String secret = "{ \"client_id\": \"XXXXXX\",\"client_secret\": \"XXXXXX\"} ";
    
    @Mock
    AWSSecretsManager secretsClient;
    @Mock
    GetSecretValueRequest secretValueRequest;
    @Mock
    GetSecretValueResult secretValueResult;

  @BeforeEach
  public void setUp(){
    lenient().when(secretsClient.getSecretValue(secretValueRequest)).thenReturn(secretValueResult);
    lenient().when(secretValueResult.getSecretString()).thenReturn(secret);
  }

}

在这里,当我运行时,我在 when(secretsClient.getSecretValue(secretValueRequest)) 处收到 NullPointerException。它表示为secretsClient.getSecretValue(secretValueRequest) is null,它作为参数传递给when()。任何建议或建议我在这里做错了什么,请。

【问题讨论】:

    标签: java amazon-web-services unit-testing mockito aws-secrets-manager


    【解决方案1】:

    您需要通过以下方式安装 mockito 扩展:@ExtendWith(MockitoExtension.class)

    (我认为您也需要将成员变量设为非私有)。

    更多线索:https://www.baeldung.com/mockito-junit-5-extension

    【讨论】:

    • 感谢您的回复。我确实有扩展并且也将变量设为非私有,但也有同样的问题。
    • NPE 暗示您的 Mock 对象没有被正确设置/注入 - 这很奇怪。您可以不使用lenient() 尝试它,或者您可以尝试使用“other”when 语法:尝试使用“other”mockito 语法:doReturn(secretValueResult).when(secretsClient).getSecretValue(secretValueRequest) - 看看这些是否有帮助?
    • 是的,没错。我什至无法弄清楚为什么它没有被注射。我已经尝试过使用 doReturn 并删除了 lenient(),这与传递的值为 null 时的错误相同。
    【解决方案2】:

    您是否尝试过先在 GetSecretVaueResult 上设置值然后返回它;像这样?

    @Mock
    AWSSecretsManager secretsClient;
    GetSecretValueResult secretValueResult = new GetSecretValueResult();
    secretValueResult.setSecretString("{\"client_id\": \"XXXXXX\",\"client_secret\": \"XXXXXX\"}");
    
    when(secretsClient.getSecretValue(any(GetSecretValueRequest.class))).thenReturn(secretValueResult);
    

    【讨论】:

      猜你喜欢
      • 2020-12-25
      • 2020-08-16
      • 2022-01-27
      • 2021-06-29
      • 2020-03-31
      • 2020-06-18
      • 2020-07-07
      • 2021-04-11
      • 2018-12-09
      相关资源
      最近更新 更多