在端到端测试中使用`WebTestClient.mutateWith()`时会出现NPE

时间:2017-09-20 15:12:50

标签: spring-security spring-webflux

当我为webflux应用程序编写一些测试时。我尝试在mutateWith(mockUser().password("password"))中通过WebTestClient添加凭据,但却导致NPE被抛出。

我使用bindToServer将测试客户端连接到正在运行的远程API,并尝试使用mutateWith(mockUser().password("password"))为请求添加基本身份验证。它在测试时会抛出一个NPE。

更新了源代码https://github.com/hantsy/spring-reactive-sample/blob/master/security-method/src/test/java/com/example/demo/IntegrationTests.java#L118-L127

1 个答案:

答案 0 :(得分:2)

在我探索mockUser的源代码后,它需要一个 MockServer 环境来运行测试,但它在我的样本中作为结束2运行。

mutateWith(mockUser().password("password"))更改为.mutate().filter(basicAuthentication("user", "password")).build(),NPE消失了。

希望这对你有帮助。

@Test public void deletingPostsWhenUserCredentialsThenForbidden_mutateWith() throws Exception { this.rest .mutate().filter(basicAuthentication("user", "password")).build() .delete() .uri("/posts/1") .exchange() .expectStatus().is4xxClientError() .expectBody().isEmpty(); }

更新了源代码https://github.com/hantsy/spring-reactive-sample/blob/master/security-method/src/test/java/com/example/demo/IntegrationTests.java#L118-L127