将玩笑模拟包装在函数中以用于多个测试

乔夫康

我正在尝试将jest.mock包装到一个函数中,以便可以在多个文件中重复使用它。我的用例是反应钩子,我正在使用打字稿。目前,我的测试文件如下所示:

test.tsx

//some imports

jest.mock('../path/to/hoook/whatever', () => ({
    useWhatever: jest.fn()
}))


const mockResult = () => {
    return ({
        some stuff
    };
};


describe('Component', () => {
let wrapper;

    beforeEach(() => {
        mocked(useWhatever).mockClear();

        mocked(useWhatever).mockImplementation(() => mockResult);

        wrapper = shallow(
            <Component />
        );
    });

    //tests below
});

这工作得很好,但是无论其他组件使用了什么钩子,我都试图包装jest.mock以便在其他测试中重用。我正在尝试做的事情看起来像这样:

模拟

export const mockWhatever = () => jest.mock('../path/to/hoook/whatever', () => ({
    useWhatever: jest.fn()
}))


export const mockResult = () => {
    return ({
        some stuff
    };
};

test.tsx

//some imports
mockWhatever();

describe('Component', () => {
let wrapper;

    beforeEach(() => {
        mocked(useWhatever).mockClear();

        mocked(useWhatever).mockImplementation(() => mockResult);

        wrapper = shallow(
            <Component />
        );
    });

    //tests below
});

以这种方式执行测试时,出现诸如“ TypeError:utils_1.mocked(...)。mockClear不是函数”之类的错误。这样可以包装模拟吗?如果是这样,我可能做错了什么或想念什么?

谢谢

那将是烧瓶

jest.mock吊起以上巴贝尔变换进口,这就是为什么这个工程按预期的原因:

import ... from 'whatever';
jest.mock('whatever', ...);

mockWhatever没有定制的Babel转换就不可能实现相同的目的,因此模块在被模拟之前就被导入了。import需要替换为require,为了使模拟生效,可以将import..require语法用于TypeScript类型安全。

__mocks__是一种重用Jest提供的模块模拟​​的方法。考虑到存在__mocks__/whatever.js模拟模块,它与一起用作模拟模块jest.mock('whatever')

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将代码包装在函数中

来自分类Dev

Javascript将链接的函数包装在单个函数中

来自分类Dev

开玩笑-一个功能模拟文件用于多个测试文件

来自分类Dev

将准备好的语句包装在函数中

来自分类Dev

如何将Ajax权限检查包装在函数中?

来自分类Dev

通过将参数包装在函数中来延迟评估?

来自分类Dev

将C ++函数包装在返回指针的c#中

来自分类Dev

自动将动态添加的对象属性(函数)包装在包装函数中

来自分类Dev

开玩笑的模拟不允许在单个测试中解析内部函数

来自分类Dev

在空手道中,将Java函数包装在JavaScript函数中的好处是什么?

来自分类Dev

将所有回调函数包装在CoffeeScript中的匿名函数中的替代方法

来自分类Dev

将多个具有相同类名的子级包装在多个 div jQuery 中

来自分类Dev

包装在UseEffect中的React异步函数

来自分类Dev

将一个函数包装在另一个函数中

来自分类Dev

如何将参数传递给JS函数而不将其包装在匿名函数中?

来自分类Dev

如何在玩笑中测试模拟函数的返回值

来自分类Dev

将委托包装在std :: function中?

来自分类Dev

将表格包装在div中

来自分类Dev

将jQuery包装在Angular指令中

来自分类Dev

将每个跨度包装在容器中

来自分类Dev

将异步功能包装在Promise中

来自分类Dev

将内容包装在父元素中

来自分类Dev

将jQuery包装在Angular指令中

来自分类Dev

将 http 包装在服务中

来自分类Dev

在C ++ 11中,是否可以将模板函数包装在std :: function中?

来自分类Dev

为什么将静态构造函数中的异常包装在TypeInitializationException中

来自分类Dev

在C ++ 11中,是否可以将模板函数包装在std :: function中?

来自分类Dev

TinyMCE-将多个元素包装在一个div中

来自分类Dev

将_app.js包装在多个提供程序中(下一步/反应)

Related 相关文章

  1. 1

    将代码包装在函数中

  2. 2

    Javascript将链接的函数包装在单个函数中

  3. 3

    开玩笑-一个功能模拟文件用于多个测试文件

  4. 4

    将准备好的语句包装在函数中

  5. 5

    如何将Ajax权限检查包装在函数中?

  6. 6

    通过将参数包装在函数中来延迟评估?

  7. 7

    将C ++函数包装在返回指针的c#中

  8. 8

    自动将动态添加的对象属性(函数)包装在包装函数中

  9. 9

    开玩笑的模拟不允许在单个测试中解析内部函数

  10. 10

    在空手道中,将Java函数包装在JavaScript函数中的好处是什么?

  11. 11

    将所有回调函数包装在CoffeeScript中的匿名函数中的替代方法

  12. 12

    将多个具有相同类名的子级包装在多个 div jQuery 中

  13. 13

    包装在UseEffect中的React异步函数

  14. 14

    将一个函数包装在另一个函数中

  15. 15

    如何将参数传递给JS函数而不将其包装在匿名函数中?

  16. 16

    如何在玩笑中测试模拟函数的返回值

  17. 17

    将委托包装在std :: function中?

  18. 18

    将表格包装在div中

  19. 19

    将jQuery包装在Angular指令中

  20. 20

    将每个跨度包装在容器中

  21. 21

    将异步功能包装在Promise中

  22. 22

    将内容包装在父元素中

  23. 23

    将jQuery包装在Angular指令中

  24. 24

    将 http 包装在服务中

  25. 25

    在C ++ 11中,是否可以将模板函数包装在std :: function中?

  26. 26

    为什么将静态构造函数中的异常包装在TypeInitializationException中

  27. 27

    在C ++ 11中,是否可以将模板函数包装在std :: function中?

  28. 28

    TinyMCE-将多个元素包装在一个div中

  29. 29

    将_app.js包装在多个提供程序中(下一步/反应)

热门标签

归档