es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Haga que Wiremock registre los resultados específicos de las llamadas en un archivo.

Tenemos la necesidad de verificar que se llamen algunas URL durante una ejecución de prueba (en el simulador de iOS) utilizando wiremock. El deseo sería que wiremock escriba la URL solicitada en un archivo de alguna manera durante una prueba. Luego validaríamos utilizando este archivo. ¿Alguien ha encontrado alguna manera de ampliar wiremock de esta manera?

¡Gracias de antemano!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Verificación de URL llamadas usando WireMock durante la ejecución de pruebas en el simulador de iOS

    Como un experto en IT especializado en Xcode y WireMock, una posible solución para verificar que se hayan llamado URL específicas durante la ejecución de pruebas en el simulador de iOS es utilizar la API de WireMock para capturar solicitudes HTTP y almacenarlas en un archivo.

    Se pueden seguir los siguientes pasos para lograr esto:

    1. Configurar WireMock para iniciar como un servidor independiente o como una regla de JUnit para el proyecto de iOS que se necesita probar.
    2. Crear una extensión personalizada para WireMock que implemente la interfaz WireMockPostServeAction, la cual se ejecutará después de que se sirva cada respuesta HTTP. Esta extensión será responsable de escribir la URL solicitada en un archivo.

    public class CustomPostServeAction extends WireMockPostServeAction {
    
        private final File outputFile;
    
        public CustomPostServeAction(File outputFile) {
            this.outputFile = outputFile;
        }
    
        @Override
        public void doGlobalAction(WireMockServer wireMockServer, Request request, Response response) {
            // Extraer la URL del objeto request
            String requestedUrl = request.getUrl();
    
            // Escribir la URL en el archivo de salida
            try (PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(outputFile, true)))) {
                out.println(requestedUrl);
            } catch (IOException e) {
                // Manejar la excepción
            }
        }
    }
    
    1. Registrar la extensión personalizada con WireMock utilizando la clase WireMockExtension.
    public class CustomWireMockExtension extends WireMockExtension {
    
        private final File outputFile;
    
        public CustomWireMockExtension(File outputFile) {
            this.outputFile = outputFile;
        }
    
        @Override
        public void configure(WireMockConfiguration config) {
            config.postServeActions(new CustomPostServeAction(outputFile));
        }
    }
    
    1. Agregar la extensión personalizada como regla o anotación a la prueba de JUnit.
    @ExtendWith(CustomWireMockExtension.class)
    public class MyTest {
    
        @Test
        public void test() {
            // Realizar solicitudes HTTP a las URL que se deben verificar
            // El CustomPostServeAction escribirá las URLs solicitadas en el archivo de salida
        }
    }
    
    1. Validar el contenido del archivo de salida después de la ejecución de la prueba para confirmar que se hayan llamado las URLs esperadas.

    Se debe tener en cuenta que la solución anterior asume que las URLs que se están probando no están siendo modificadas o redirigidas por el servidor. En caso de que sea así, puede ser necesario agregar lógica adicional para capturar la URL original solicitada.

Comments are closed.