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

305
Visualizações
Stub de Sinon: burlarse de una función que devuelve una matriz de objetos

Estoy tratando de stub el siguiente código

 async function logUpdate(client) { const results = await client.query(query.toParam()); const { count, timestamp } = results.rows[0]; await db.updateDatasourceLogs(destdb, DB.src, TABLES.src, timestamp, count); }

Este es el siguiente código que estoy usando para cerrar el código anterior

 fakeClient = { query: sinon.stub().resolves(fakeRows), }; const rowData = { count: 1, timestamp: '' }; fakeRows = { rows: sinon.stub().returns([rowData]), }; fakeSequel = { useFlavour: sinon.stub().returns(toParam: () => false,), };

Recibo un error de desestructuración

TypeError: no se puede desestructurar el count de propiedades de 'indefinido' o 'nulo'.

en línea

 const { count, timestamp } = results.rows[0];

¿Cómo cortar la línea anterior?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Si observamos el cuerpo de su función logUpdate , vemos que comienza con las siguientes dos líneas:

 const results = await client.query(query.toParam()); const { count, timestamp } = results.rows[0];

Este código dice:

  1. Espere la Promesa devuelta por la llamada a client.query y asígnela a una variable llamada results .
  2. results es un objeto con una propiedad llamada rows que es una matriz cuyo elemento 0 debe ser un objeto con propiedades de count y timestamp de tiempo, que desestructuramos en variables locales.

Esto implica que el valor de los resultados se parece a:

 { "rows": [ { "count": 1 "timestamp": "0" } ] }

Sin embargo, en nuestro código de creación de apéndices, tenemos lo siguiente:

 fakeRows = { rows: sinon.stub().returns([rowData]), };

Lo que dice que fakeRows es un objeto con una propiedad de rows cuyo valor es una función que devuelve [rowData] .

Si tuviéramos que implementar este Objeto sin sinon, se vería así:

 { "rows": function () { return [ { "count": 1 "timestamp": "0" } ]; } }

Observe la diferencia entre la estructura que espera logUpdate y lo que realmente proporciona fakeRows . Específicamente, logUpdate espera que los results tengan una matriz de rows , pero, con nuestro código auxiliar, ¡tiene una función de rows !

Podemos arreglar esto simplemente haciendo que fakeRows referencia a nuestros datos de rowData directamente:

 const fakeRows = { rows: [rowData] };
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