首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用proxyquire模拟模块函数

如何使用proxyquire模拟模块函数
EN

Stack Overflow用户
提问于 2018-02-28 00:59:41
回答 1查看 894关注 0票数 1

我需要模拟“mkdirp-promise”节点模块,它公开了一个构造函数,如下所示

代码语言:javascript
复制
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模拟它:

代码语言:javascript
复制
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

代码语言:javascript
复制
mkdirpPromiseMock = sinon.stub().resolves();

但我做不到。任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2019-09-21 04:52:07

Proxyquirejest不兼容。

你需要使用像rewiremock这样的模仿库。

请给我一个详细说明的look at this answer

REPL example

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49014050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档