Necesito ayuda con el siguiente código:
const ffmpeg = require('fluent-ffmpeg'), {PassThrough} = require('stream'); ffmpeg.setFfmpegPath('/opt/bin/ffmpeg'); ffmpeg.setFfprobePath('/opt/bin/ffprobe'); exports.wavCompilation = async (wavObjList, s3OutputFullPath) => { let command = ffmpeg(); return new Promise(async (resolve, reject) => { const pt = new PassThrough() command .complexFilter(complexFilterList) .audioFrequency(44100) .audioChannels(2) .outputOptions('-map [audio]') .toFormat("wav") .output(pt, {end: true}) .on('error', function (err, stdout, stderr) { console.log("stdout:\n" + stdout); console.log("stderr:\n" + stderr); if (err) { console.log(err.message); return reject("Error"); } }) .on('start', (commandLog) => printLog(commandLog)) .on(`end`, () => console.info("end ffmpeg")) .run() resolve(***); }); }¿Alguien sabe cómo puedo simular/simular/espiar/falsificar "ffmpeg"?
Uso Sinon para pruebas unitarias y estoy tratando de usar proxyquire para simular "fluidez-ffmpeg"
const sinon = require('sinon'), proxyquire = require('proxyquire').noCallThru(); let ffmpegStub = { setFfmpegPath: () => {}, setFfprobePath: () => {} } const ffmpegService = proxyquire('../services/ffmpeg-service/index', { 'fluent-ffmpeg': ffmpegStub });para los métodos setFfmpegPath y setFfprobePath funciona pero para la línea:
let command = ffmpeg();dice "ffmpeg no es una función"
Intenté agregar una función predeterminada como:
let ffmpegStub = { default: () => {}, setFfmpegPath: () => {}, setFfprobePath: () => {} }pero tampoco funciona y ahora no tengo idea de lo que podría hacer.
Por favor, necesito algunas ideas nuevas, mi objetivo es captar el argumento de "complexFilter" y afirmarlo.
No hay necesidad de proxyquire.
Tengo lo que quería con lo siguiente:
filterStub = sandbox.stub(ffmpeg.prototype, "complexFilter").returnsThis(); sandbox.stub(ffmpeg.prototype, "run").returnsThis();