6

kapsamlı ve çok okunabilir entegrasyon testleri ve MockRestServiceServer ile alay uzaktan servis isteklerini yazmak için onun çok kolay mikro servisleri oluşturma Bahar Boot ile çalışıyor.Spring Boot + Bulut | Zuul Proxy | Entegrasyon testi

ZuulProxy'da ek tümleştirme testi gerçekleştirmek için benzer yaklaşımı kullanmanın bir yolu var mı? Başlamak istediğim, ZuulProxy'un ZuulFitler s sayfamın beklendiği gibi davrandığını doğrulayacak ve doğrulayacağı uzak sunucularla alay edebilmektir. Ancak ZuulProxy, MockRestServiceServer tarafından yeniden yapılandırılabilen RestTemplate doğal olarak kullanmayan Netflix'ten RestClient 0 (kullanımdan muaf oldu mu?) Kullanıyor ve şu an için proxied istekleri için uzak hizmetlerden gelen yanıtlarla ilgili iyi bir yol bulamıyorum.

Ben bir API Geçidi benzer hareket edecek sonra API Oturum Anahtarı oluşturulmasını ele ve sorumlu bir mikro hizmet var. Yönlendirme, altında yatan hizmetlerin temelini oluşturmak için Zuul Proxy ile yapılır ve Zuul Filtreleri, Oturum anahtarının geçerli olup olmadığını algılayacaktır. Bir entegrasyon testi bu nedenle geçerli bir oturum oluşturacak ve daha sonra sahte bir son noktaya, örneğin, “entegrasyon/test” e yönlendirecektir.

'Tümleştirme/sınama', @WebIntegrationTest üzerinde bir yapılandırma özelliği ayarlayarak yeni bir son noktanın belirlendiğini belirterek, RestTemplate aracılığıyla işlenmekte olan tüm hizmetleri başarılı bir şekilde eşleştirebilirim, ancak Zuul iletme değil.

Bir ileri hedef hizmetin alay edilmesi için en iyi yolu nedir?

cevap

3

WireMock'a bakın. Spring Cloud Zuul projemin entegrasyon seviyesi testini yapmak için kullanıyordum.

import static com.github.tomakehurst.wiremock.client.WireMock.*; 

public class TestClass { 
@Rule 
public WireMockRule serviceA = new WireMockRule(WireMockConfiguration.options().dynamicPort()); 

@Before 
public void before() { 
    serviceA.stubFor(get(urlPathEqualTo("/test-path/test")).willReturn(aResponse() 
      .withHeader("Content-Type", "application/json").withStatus(200).withBody("serviceA:test-path"))); 
} 

@Test 
public void testRoute() { 
    ResponseEntity<String> responseEntity = this.restTemplate.getForEntity("/test-path/test", String.class); 
    assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK); 

    serviceA.verify(1, getRequestedFor(urlPathEqualTo("/test-path/test"))); 
} 
} 
+1

Bunun çalışması için eklenmesi gereken herhangi bir yapılandırma var mı? Benzer bir şey yapmaya çalışıyorum ama Zuul rotayı seçmiyor. com.netflix.client.ClientException: strategie': Yük dengeleyici istemci için kullanılabilir sunucuyu yok bu özel durum 'Neden Olduğu olsun. O rotaya, bu durumda Eureka içinde, hizmet keşif sunucusundan Zuul yapılandırma bekliyor bilgilerden doğru ip çağrısı geliyor düşünün. – Kilian