Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

340
Vistas
¡La verificación del pacto falló! con error de consola Faltan solicitudes: GET /users/login

Soy muy nuevo en Pact-js y en las pruebas de contrato. Haré todo lo posible para explicar mi problema. por ahora solo intento generar el contrato de consumo

aquí está mi proveedor de pactos:

 export const provider = new Pact({ consumer: 'Users', provider: 'UsersService', port: 1234, log: path.resolve(process.cwd(), 'logs', 'pact.log'), pactfileWriteMode: 'overwrite', logLevel: "DEBUG", dir: path.resolve(process.cwd(), 'pacts'), });

y aquí está mi prueba:

 jest.mock("axios"); const EXPECTED_BODY = {...} describe("Pact tests axios", () => { describe("/GET login", () => { beforeAll(() => provider.setup()); afterEach(()=> provider.verify()) afterAll(() => provider.finalize()); it("should login user and response with user object", async () => { await provider.addInteraction({ state: 'user logged', uponReceiving: 'request logged user', withRequest: { method: 'GET', path: '/users/login', body: {username: "test", password: "11223344"}, }, willRespondWith: { status: 200, headers: { 'Content-Type': 'application/json', }, body: eachLike(EXPECTED_BODY), }, }); axios.get.mockResolvedValueOnce(EXPECTED_BODY); const loggedUser = await loginUser("test", "11223344") expect(axios.get).toHaveBeenCalledTimes(1) expect(axios.get).toHaveBeenLastCalledWith("http://localhost:8080/users/login", {"headers": {"Content-Type": "application/json"}, "params": {"password": "11223344", "username": "test"}}) expect(loggedUser).toEqual(EXPECTED_BODY) }) }); })

Debo decir que mi solicitud original toma dos parámetros nombre de username y password y devuelve un objeto que contiene toda la información de ese usuario, por supuesto, el usuario existe, si no, devuelve null

aquí está la función de llamada API si es necesario:

 export default async function loginUser(username, password) { try{ return await axios.get(("http://localhost:8080/users/login"), { headers: { "Content-Type": "application/json" }, params: { username: username, password: password } }) }catch (e){ return null } }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Pact espera que usted realmente haga la llamada al punto final del que se está burlando en Pact.

Solicitudes faltantes: GET /users/login

Este error dice "dijiste que harías una llamada GET a /users/login pero no la recibí".

 jest.mock("axios");

Parece que te estás burlando del cliente HTTP Axios. Ahora tiene un simulacro para lo que necesita enviar solicitudes al Pact Mock.

En una prueba de Pact, considérela como una prueba unitaria para su código de cliente de API. La solicitud real debe enviarse a Pact Mock y Pact verificará que se realizó la solicitud correcta y devolverá la respuesta simulada.

Así que la solución es simple:

  1. Eliminar todas las burlas de axios
  2. Proporcione una forma de modificar el destino de la API para loginUser
  3. Configure su cliente API para enviar la solicitud a localhost:1234 en lugar de la real antes de ejecutar las pruebas

(NOTA: puede hacer que el pacto encuentre un puerto libre dinámicamente al no configurar la opción de port y tomar el host de la respuesta de la llamada setup() )

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda