OAuth/Config 客户端 Spring 应用程序的单元测试
Posted
技术标签:
【中文标题】OAuth/Config 客户端 Spring 应用程序的单元测试【英文标题】:Unit tests for a OAuth/Config client Spring application 【发布时间】:2021-08-10 23:24:44 【问题描述】:我有一个非常简单的带有云配置客户端和 oauth 资源的 Spring 应用程序。事实证明,在不启动配置服务器的情况下运行单元测试是一个相当大的挑战。
目前没有任何用于禁用云配置客户端的解决方案适用于最新版本的 spring。我什至尝试使用空的或伪造的 config.import url,但都没有禁用它。我真的不想为了运行单元测试而启动配置服务器,而且感觉也不正确。
为配置客户端应用程序设置测试的推荐方法是什么?
寻找指针、想法。
谢谢!
【问题讨论】:
【参考方案1】:在测试中将配置设为可选似乎可以完成这项工作,尽管您仍然看到有人尝试下载配置。
spring.config.import: "optional:configserver:http://localhost:8888"
或者你可以使用
spring.cloud.config.enabled: false
但是,客户端将始终尝试下载配置,即使它似乎将其视为可选并继续前进。我认为这对新用户来说真的很令人困惑——有人认为客户端仍然处于启用状态。当配置服务器启动并且您希望客户端不下载配置时会发生什么,但它仍然会下载。我想找出答案的唯一方法就是测试。
奇怪的是下面的组合无法加载上下文。
spring.config.import: "optional:configserver:http://localhost:8888"
spring.cloud.config.enabled: false
导入设置为可选或配置被禁用,但不能同时设置。
而且,这仅用于测试。使用与 test 相同的设置创建另一个配置文件 application-standalone.yml
失败。
【讨论】:
您是否尝试过此线程中描述的解决方案?道格的答案看起来很有希望;):***.com/questions/41985262/… @MarkBramnik 最新版本的 cloud-config-client 不使用 bootstap.properties (***.com/a/65009480/1257434),并且我已经为测试提供了不同的属性文件。我真的很想从属性文件外部提供配置。 也许是个愚蠢的问题,但你是把spring.cloud.config.enabled: false
放在application.yaml
还是bootstrap.yaml
中?
application.yaml。从这里 (***.com/questions/64994034/…) 可以看出,bootstrap.yml 已被弃用,默认情况下不使用。必须设置一个设置以启用旧模式。以上是关于OAuth/Config 客户端 Spring 应用程序的单元测试的主要内容,如果未能解决你的问题,请参考以下文章
Error creating bean with name ‘org.springframework.security.oauth2.config.annotation.web.configurati