Unit testing 无法使用OIDC身份验证服务器进行单元测试?
试图为我的应用程序编写单元测试,但遇到了以下问题 由于定义了身份验证服务器(在本例中为keydape),在没有运行身份验证服务器的情况下,我的Quarkus应用程序甚至无法启动。这就是为什么我想问我是否可以解耦这个硬依赖 我尝试对不受任何机制保护的方法进行单元测试,以便该方法完全独立于Jwt或Auth服务器 提前感谢并致以亲切的问候 罗萨里奥 应用程序属性Unit testing 无法使用OIDC身份验证服务器进行单元测试?,unit-testing,openid-connect,quarkus,Unit Testing,Openid Connect,Quarkus,试图为我的应用程序编写单元测试,但遇到了以下问题 由于定义了身份验证服务器(在本例中为keydape),在没有运行身份验证服务器的情况下,我的Quarkus应用程序甚至无法启动。这就是为什么我想问我是否可以解耦这个硬依赖 我尝试对不受任何机制保护的方法进行单元测试,以便该方法完全独立于Jwt或Auth服务器 提前感谢并致以亲切的问候 罗萨里奥 应用程序属性 #OIDC quarkus.oidc.client-id=xxx #quarkus.oidc.credentials.secret=1bef
#OIDC
quarkus.oidc.client-id=xxx
#quarkus.oidc.credentials.secret=1bef[..]
quarkus.oidc.application-type=service
quarkus.oidc.auth-server-url=http://localhost:8081/auth/realms/randomRealm
测试:
@测试
public void testHelloEndpoint(){
给定()
.when().get(“/video/hello”)
.然后()
.状态代码(200)
.body(is(“hello”);
}
您可以在测试配置文件中停用oidc。只需将以下内容添加到application.properties:
%test.quarkus.oidc.enabled=false
注意:如果您想要编写测试,包括与oidc的连接,此解决方案将不起作用,因为您无法标记测试应在哪里激活或不激活。然后,您必须启动一个oidc服务器,如keydape,即使用testcontainers。我认为Rest Assured有一种方法可以为其添加凭据。谷歌搜索了一下,但没有找到任何东西:有没有办法禁用数据源?在使用@QuarkusTest注释的测试中,您不能完全停用数据源,但您可以将数据源更改为H2,因此quarkus会自动为您的测试启动内存中的H2数据库。将以下内容添加到您的application.properties
%test.quarkus.datasource.db kind=h2
%test.quarkus.datasource.jdbc.url=jdbc:h2:mem:test
。您还需要将h2 jdbc驱动程序添加到您的依赖项中,就像您的postgres驱动程序一样。看看: