首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嘲弄模组

嘲弄模组
EN

Stack Overflow用户
提问于 2019-10-03 15:26:14
回答 1查看 730关注 0票数 0

我试图使用Jest来模拟模块导入,但由于某种原因,我正在苦苦挣扎。我有以下代码:

src/elastic.js

代码语言:javascript
复制
const getRolesFunc = elasticClient => async username => {
   // Do some stuff
}

module.exports = { getRolesFunc };

src/handlerFactory.js

代码语言:javascript
复制
const { getRolesFunc } = require("../src/elastic");

const handlerFactory = elasticClient => 
    async (event) =>  {
        const getRolesAsync = getRolesFunc(elasticClient);
        const roles = await getRolesAsync();
    }
}

我的测试文件目前看起来如下:

tests/handlerFactory.unit.test.js

代码语言:javascript
复制
const { handlerFactory } = require("../src/handlerFactory");
const { getRolesFunc } = require("../src/elastic");

jest.mock("../src/elastic", () => ({
    getRolesFunc: jest.fn(),
}));

describe("handlerFactory", () => {

    it("handler returns correct response", async () => {
        getRolesFunc.mockImplementation(() => "foo");

        // Call the handler to get our actual result
        const handlerAsync = handlerFactory({});
        const result = await handlerAsync(event);
    });
});

然而,目前我的测试中出现了一个错误:

TypeError: getRolesFunc.mockImplementation不是一个函数

我尝试过一些没有起作用的东西,这感觉是最接近的,但我无法理解为什么jest.mock不能正常工作。我看了几个例子,但仍然找不出为什么我不能让嘲弄的工作。有人能帮我指出我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-04 03:20:30

由于您拥有module.exports = { getRolesFunc };,您需要在代码中进行以下更改:

代码语言:javascript
复制
const { handlerFactory } = require("../src/handlerFactory");
const elasticObj = require("../src/elastic");

jest.mock("..src/elastic");
// in your example, now put below code:

elasticObj.getRolesFunc.mockImplementation(() => "foo");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58222348

复制
相关文章

相似问题

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