2016-05-13 7 views
1

Ich habe Grails Rest API-Anwendung, die intern externe Rest apis durch Service ruft. Ich möchte externen API-Aufrufdienst bei der Durchführung von Integrationstestfällen vortäuschen. In Integrationstestfällen stelle ich eine Anfrage an die Anwendungsrest-API. Da ich die externe API nicht verspotten kann, schlägt es fehl, wenn externe API nicht erreichbar ist. So, wie man den Service verspottet, der externe APIs in den Integrations-Testfällen aufruft.Mocking in Grails Spock Integrationstest

+0

Ohne Code, wie wir vorschlagen können, wo das Problem ist. –

Antwort

0

Fügen Sie die URL der externen API in Ihre Konfiguration ein, damit Sie sich darüber lustig machen können, sagen wir, ihr Konfigurationsschlüssel heißt myConfigValue. Installieren Sie WireMock und einen Test-Server als JUnit Regel umfassen:

@Rule 
WireMockRule mockServer = new WireMockRule(WireMockConfiguration.wireMockConfig().port(9900)) 

der Mock-Servers URL in Ihren Test-Feed wie in the Grails manual beschrieben:

static doWithConfig(c) { 
    c.myConfigValue = "http://localhost:9900/" 
} 

Dann WireMock API verwenden, um externe Anrufe zu validieren und Stummel der Antworten, z

stubFor(get(urlEqualTo("/binary-body")) 
    .willReturn(aResponse() 
    .withBody(new byte[] { 1, 2, 3, 4 }))); 

Überprüfen Sie ihre Dokumentation, was möglich ist. Es gibt Alternativen zu WireMock, aber keine hat so gut für uns gearbeitet.

+0

Als Alternative zu WireMock, hier ist ein Blog-Beitrag mit einer anderen Bibliothek, Ratpack, um Grails 3 Anwendungen zu testen: http://kyleboon.org/blog/2015/07/18/stubbing-service-interactions-with-testing-microservices / –