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.

¿Cómo crear un mapeo en WireMock para garantizar el número exacto de encabezados en una solicitud?

Aquí hay una configuración básica del servidor WireMock con coincidencia de dos encabezados.

Me gustaría garantizar que el servidor coincida con la solicitud solo cuando se presentan los encabezados dados explícitamente.

¿Cómo expresar la intención “con exactamente dos encabezados” o “sin otros encabezados”?

WireMockServer server = createServer();

server.givenThat(
    WireMock.get(urlPathEqualTo("/mi/ruta"))
            .withHeader("x-primer" , equalTo("abc"))
            .withHeader("x-segundo" , equalTo("xyz")) 

            // ¿cómo garantizar que no hay otros encabezados?

            .willReturn(ok("{}"))
);
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para asegurarse de que el servidor coincida con la solicitud solo con los encabezados explícitamente dados y ningún otro encabezado, puede utilizar el método withHeader para que coincida con cada encabezado esperado y luego usar el método withoutHeader para asegurarse de que no haya otros encabezados presentes.

    Así es como puede modificar la configuración básica para expresar la intención de hacer coincidir las solicitudes con exactamente dos encabezados y ningún otro encabezado:

    WireMockServer server = createServer();
    
    server.givenThat(
        WireMock.get(urlPathEqualTo("/my/path"))
                .withHeader("x-first", equalTo("abc"))
                .withHeader("x-second", equalTo("xyz"))
                .withoutHeader(".*") // no hacer coincidir otros encabezados
                .willReturn(ok("{}"))
    );
    

    En el ejemplo anterior, se utiliza el método withoutHeader con un patrón de expresión regular ".*" para que no coincidan con ningún otro encabezado. Esto asegura que el servidor solo haga coincidir solicitudes con exactamente dos encabezados y ningún otro encabezado presente.

Comments are closed.