【发布时间】:2021-11-22 15:33:01
【问题描述】:
我有以下代码。
singleton.ts
import prisma from "../prismaClient";
import { mockDeep, mockReset } from "jest-mock-extended";
import { PrismaClient } from "@prisma/client";
import { DeepMockProxy } from "jest-mock-extended/lib/cjs/Mock";
jest.mock("../prismaClient", () => ({
__esModule: true,
default: mockDeep<PrismaClient>(),
}));
beforeEach(() => {
mockReset(prismaMock);
});
export const prismaMock = prisma as unknown as DeepMockProxy<PrismaClient>;
prismaClient.ts
import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient({
log: [
{
emit: "event",
level: "query",
},
{
emit: "stdout",
level: "error",
},
{
emit: "stdout",
level: "info",
},
{
emit: "stdout",
level: "warn",
},
],
});
export default prisma;
我在这里遵循 prisma 的单元测试指南:https://www.prisma.io/docs/guides/testing/unit-testing。我不知道为什么我不断收到此错误:
这是错误信息 ReferenceError:在初始化之前无法访问“jest_mock_extended_1”
7 | __esModule: true,
8 |
> 9 | default: mockDeep<PrismaClient>(),
| ^
10 | }));
11 |
12 | beforeEach(() => {
at src/utils/testUtils/singleton.ts:9:12
at Object.<anonymous> (src/utils/testUtils/singleton.ts:1:1)
at Object.<anonymous> (src/resolvers/functions/user.test.ts:1:1)
【问题讨论】:
-
嘿,我似乎无法复制这个问题,你能提供一个复制吗?还有两件事。首先,这是一种预感,但based on this PR,您能否检查一下更改
DeepMockProxy导入是否有帮助?其次,如果你愿意,我可以抛出一个带有工作单元测试示例的小型 repo 供你查看。 -
@TasinIshmam 感谢您的评论。当您说更改
DeepMockProxy时,您建议将其更改为什么? -
我的意思是你可以像这样直接导入它:
import { mockDeep, mockReset, DeepMockProxy } from 'jest-mock-extended'使用2.0.4的jest-mock-extended版本。 -
@TasinIshmam 啊,我刚刚进行了更改。不幸的是,我不断收到同样的错误。我已经更新了帖子,提供了有关该错误的更多信息。
-
我明白了,是否可以创建一个小型复制 github 存储库,以便我看看?
标签: typescript unit-testing jestjs prisma