有没有一种方法可以让HttpHeaders中的bearerToken集在测试中执行验证



我有一个构建HttpHeaders的方法。它在登录后获取一个bearerToken,并将其设置在头中。我想验证是否在单元测试中设置了令牌,但我找不到任何从标头获取令牌的方法。

这是构建标头的方法:

public static HttpHeaders buildHeaders() {
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
String bearerToken = getToken();
headers.setBearerAuth(bearerToken);
return headers;
}

这是我的测试:

@Test
void shouldBuildHeaders() {
HttpHeaders httpHeaders = Util.buildHeaders();
assertNotNull(httpHeaders);
assertEquals(httpHeaders.getAccept(), Collections.singletonList(MediaType.APPLICATION_JSON));
//I would like to do something like this to verify if the token is being set.
// String bearerToken = httpHeaders.getBearerToken();
// assertNotNull(bearerToken);
}

有什么方法可以获得代币吗?或者我的测试方式有什么问题吗?

您可以尝试在标题中循环查看可用的密钥,如下所示:

httpHeaders.forEach((key,value)->{
System.out.println(key+"-->"+value);
});

这允许您检查您拥有的所有标头。

然而,在您的情况下,您可以通过查看以下文档来查找您想要的特定标头(我假设您使用的是Spring(:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/http/HttpHeaders.html#setBearerAuth-java.lang.String-

标题键实际上是";"授权";,这意味着你可以使用下面的代码来访问它的价值:

String bearerToken = httpHeaders.getFirst(HttpHeaders.AUTHORIZATION);

最新更新