Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

350
Visualizações
¡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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda