import org.springframework.cloud.client.discovery.event.HeartbeatEvent; //导入依赖的package包/类
@Test
public void deregister_removed_app() {
StepVerifier.create(registry.register(Registration.create("ignored", "http://health").build()))
.consumeNextWith((id) -> {})
.verifyComplete();
StepVerifier.create(
registry.register(Registration.create("different-source", "http://health2").source("http-api").build()))
.consumeNextWith((id) -> {})
.verifyComplete();
listener.setIgnoredServices(singleton("ignored"));
List instances = new ArrayList<>();
instances.add(new DefaultServiceInstance("service", "localhost", 80, false));
instances.add(new DefaultServiceInstance("service", "example.net", 80, false));
when(discovery.getServices()).thenReturn(singletonList("service"));
when(discovery.getInstances("service")).thenReturn(instances);
listener.onApplicationEvent(new HeartbeatEvent(new Object(), new Object()));
StepVerifier.create(registry.getInstances("service"))
.assertNext(a -> assertThat(a.getRegistration().getName()).isEqualTo("service"))
.assertNext(a -> assertThat(a.getRegistration().getName()).isEqualTo("service"))
.verifyComplete();
StepVerifier.create(registry.getInstances("ignored"))
.assertNext(a -> assertThat(a.getRegistration().getName()).isEqualTo("ignored"))
.verifyComplete();
StepVerifier.create(registry.getInstances("different-source"))
.assertNext(a -> assertThat(a.getRegistration().getName()).isEqualTo("different-source"))
.verifyComplete();
instances.remove(0);
listener.onApplicationEvent(new HeartbeatEvent(new Object(), new Object()));
StepVerifier.create(registry.getInstances("service"))
.assertNext(a -> assertThat(a.getRegistration().getName()).isEqualTo("service"))
.verifyComplete();
StepVerifier.create(registry.getInstances("ignored"))
.assertNext(a -> assertThat(a.getRegistration().getName()).isEqualTo("ignored"))
.verifyComplete();
StepVerifier.create(registry.getInstances("different-source"))
.assertNext(a -> assertThat(a.getRegistration().getName()).isEqualTo("different-source"))
.verifyComplete();
}