gpt4 book ai didi

javascript - 单元测试 -> Sinon + fluent-ffmpeg

转载 作者:行者123 更新时间:2023-12-04 23:01:18 30 4
gpt4 key购买 nike

我需要以下代码的帮助:

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(***);
});
}
有谁知道我怎样才能 stub /模拟/ spy /伪造“ffmpeg”?
我使用 Sinon 进行单元测试,我正在尝试使用 proxyquire 来模拟“fluent-ffmpeg”
const sinon = require('sinon'),
proxyquire = require('proxyquire').noCallThru();

let ffmpegStub = {
setFfmpegPath: () => {},
setFfprobePath: () => {}
}

const ffmpegService = proxyquire('../services/ffmpeg-service/index', {
'fluent-ffmpeg': ffmpegStub
});
对于 setFfmpegPath 和 setFfprobePath 方法,它可以工作,但对于以下行:
let command = ffmpeg();
它说“ffmpeg不是一个函数”
我尝试添加一个默认功能,例如:
let ffmpegStub = {
default: () => {},
setFfmpegPath: () => {},
setFfprobePath: () => {}
}
但它也不起作用,我现在不知道我能做什么。
请我需要一些新鲜的想法,我的目标是捕获“complexFilter”的论点并断言它。

最佳答案

不需要代理查询。
我已经得到了我想要的以下内容:

filterStub = sandbox.stub(ffmpeg.prototype, "complexFilter").returnsThis();
sandbox.stub(ffmpeg.prototype, "run").returnsThis();

关于javascript - 单元测试 -> Sinon + fluent-ffmpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70795558/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com