gpt4 book ai didi

node.js - 如何使用 proxyquire 模拟模块功能

转载 作者:太空宇宙 更新时间:2023-11-04 02:45:51 24 4
gpt4 key购买 nike

我需要模拟“mkdirp-promise” Node 模块,该模块公开如下构造函数

mkdirpPromise(dirPath)
.then(() => {
console.log('ABCDEFGH');
resolve(dirPath);
})
.catch((error) => {
console.log('HeABCDEFGHre');
const details = error.message;
const err = customError.failed_create_downloads_directory()
.withDetails(details);
reject(err);
});

我第一次能够使用 proxiquire 来模拟它,如下所示:-

let mkdirpPromiseMock = sinon.stub().rejects();

const sthreeDownloadMock =
proxyquire('./../../modules/sThreeDownload', {
joi: joiMock,
fs: fsMock,
'@monotype/core-error': {
errors: {
ApiError: customErrorMock,
},
},
'aws-sdk': awsSDK,
'mkdirp-promise': mkdirpPromiseMock,
path: pathMock,
});

现在我想用

覆盖第二个测试用例中的 mkdirpPromiseMock
mkdirpPromiseMock = sinon.stub().resolves();

我做不到。如有任何帮助,我们将不胜感激。

最佳答案

Proxyquirejest 不兼容。

您需要使用类似 rewiremock 的模拟库.

请有一个look at this answer其中有详细内容。

REPL example

关于node.js - 如何使用 proxyquire 模拟模块功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49014050/

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