Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 无法使用OIDC身份验证服务器进行单元测试?_Unit Testing_Openid Connect_Quarkus - Fatal编程技术网

Unit testing 无法使用OIDC身份验证服务器进行单元测试?

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

试图为我的应用程序编写单元测试,但遇到了以下问题

由于定义了身份验证服务器(在本例中为keydape),在没有运行身份验证服务器的情况下,我的Quarkus应用程序甚至无法启动。这就是为什么我想问我是否可以解耦这个硬依赖

我尝试对不受任何机制保护的方法进行单元测试,以便该方法完全独立于Jwt或Auth服务器

提前感谢并致以亲切的问候

罗萨里奥

应用程序属性

#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驱动程序一样。看看: