spring-cloud/spring-cloud-gateway
在 GitHub 查看Identical Routes are not considered equal: AsyncPredicate does not override equals()
Open
#3,236 创建于 2024年1月25日
bughelp wanted
仓库指标
- Star
- (4,284 star)
- PR 合并指标
- (平均合并 1天 21小时) (30 天内合并 18 个 PR)
描述
Two logically equal Routes are not programmatically equal since Route's equals() compares predicates, and the AsyncPredicate class does not override equals() (hence you get a simple reference comparison). Here's a test that reproduces the issue:
class RouteEqualityTest {
@Test
void testTwoIdenticalRouteAreEqual() {
assertThat(getRouteBuilderStub().build()).isEqualTo(getRouteBuilderStub().build());
}
private Route.AsyncBuilder getRouteBuilderStub() {
return Route.async()
.id("123")
.uri("https://example.com")
.predicate(exchange -> exchange.getRequest()
.getPath()
.value()
.equals("/test-path"));
}
}