如何在玩笑中模拟文件夹中的所有文件

aWe*_*per 12 javascript reactjs jestjs

我有如下文件

widgets
|
 --tabs
    |
     -- __mocks_
        |
         -- index.ts
     -- index.ts
 --button
    |
     -- __mocks_
        |
         -- index.ts
     -- index.ts
Run Code Online (Sandbox Code Playgroud)

它在文件中导入/使用为

import { Button } from 'common/widgets/button';
Run Code Online (Sandbox Code Playgroud)

我可以单独嘲笑其中的每一个。

jest.mock('common/widgets/tabs');
jest.mock('common/widgets/button');
Run Code Online (Sandbox Code Playgroud)

但是有没有一种方法可以模拟它们,例如将所有这些添加到文件中并导入它们,或者像下面使用公共模拟文件夹和索引文件一样。

jest.mock('common/widgets');
Run Code Online (Sandbox Code Playgroud)

ABD*_*NOV 1

你可以这样做(PS所有函数和函数调用仅用于演示:

文件夹结构

在此输入图像描述

小部件/按钮/index.js

// demonstration
const someFunction = () => {
  console.log("widgets/button")
}

export default someFunction;
Run Code Online (Sandbox Code Playgroud)

小部件/选项卡/index.js

// demonstration
const someFunction = () => {
  console.log("widgets/tabs")
}

export default someFunction;
Run Code Online (Sandbox Code Playgroud)

小部件/index.js

export { default as Button } from './button/index';
export { default as Tabs } from './tabs/index';
Run Code Online (Sandbox Code Playgroud)

-- 用法 您可以在任何文件中以名为 import 的方式导入函数。例如: /any/file.js

import { Button, Tabs } from 'common/widgets'
...
Run Code Online (Sandbox Code Playgroud)

因此,您应该能够将它们导入到单个模拟文件中。

模拟/index.js

jest.mock('common/widgets');
Run Code Online (Sandbox Code Playgroud)