如何在AWS上运行的Spring Boot应用程序本地运行集成测试?

时间:2017-10-04 12:11:39

标签: spring amazon-web-services spring-boot amazon-ec2 spring-cloud

我正在开发一个在AWS上运行的Spring Boot应用程序。我已经安装了Spring Cloud AWS启动器,但是当我尝试在我的笔记本电脑上本地运行集成测试时,我遇到了这个错误。

  

创建名为'org.springframework.cloud.aws.context.support.io.ResourceLoaderBeanPostProcessor#0'的bean时出错:在设置构造函数参数时无法解析对bean'amazonS3'的引用;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为'amazonS3'的bean时出错:init方法的调用失败;嵌套异常是java.lang.IllegalStateException:没有可用的EC2元数据,因为应用程序未在EC2环境中运行。只有当应用程序在EC2实例上运行时才能进行区域检测

有没有办法在没有AWS的情况下运行我的应用程序?仅用于本地集成测试目的。

1 个答案:

答案 0 :(得分:0)

考虑添加使用外部API的类的伪实现。 您只能在测试配置文件中使用它们。 例如:

@Component
@Profile("default")
public class FakePhotosUploader implements Photos {

  @Override
  public String uploadPhoto(byte[] bytes, String name, Integer receiptId) {
    return UUID.randomUUID().toString();
    //you can write here some implementation, suitable for your tests

  }
}

您可以在默认配置文件中关闭aws。

所以它不会去AWS。

只是不要将AmazonS3注入默认配置文件中的bean,并且不会创建它。

希望我能正确理解你的问题。