我搜索了很长时间,以开玩笑地模拟任何模块(就像rewire一样)。我终于设法做到了,它就像一个魅力:
jest.mock('common/js/browser-utils', () => ({
openBrowser: jest.fn()
}));
const { openBrowser: openBrowserSpy } = jest.requireMock(
'common/js/browser-utils'
);
Run Code Online (Sandbox Code Playgroud)
但是我想知道是否还有另一种快速的方法?我看到了该genMockFromModule方法,但是我从未使它起作用(也许不是这种用法。)
我要的是简单的:嘲讽由一个模块jest.fn()(或任何自动机制),然后能够访问此jest.fn()在我的测试中(此处openBrowserSpy),以expect(assertions)在其上
我在打字稿中遇到了问题。我有以下层次结构:
.
+-- @types
| +-- declaration1.ts
| +-- declaration2.ts
+-- common
| +-- utils1.ts
| +-- utils2.ts
+-- tests
| +-- utils1.test.ts
| +-- utils2.test.ts
Run Code Online (Sandbox Code Playgroud)
在我的 tsconfig.json 中,我将此配置放在测试和公共资源中公开我的所有类型(或 vscode 抱怨):
{
"compilerOptions": {
"outDir": "build/",
},
"include": ["tests", "common", "@types"]
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,我不想编译所有这些东西,我只想编译公共资源(它们是实用程序,我无法获得单个(甚至多个)入口点)。
所以我想输入tsc并获取一个build文件夹填充,如下所示:
.
+-- build
| +-- common
| | +-- utils1.js
| | +-- utils2.js
// nothing else
Run Code Online (Sandbox Code Playgroud)
相反,我得到了这个:
.
+-- build
| +-- @types
| | +-- declaration1.js
| | +-- declaration2.js …Run Code Online (Sandbox Code Playgroud)