因为registerEnumType,jest中无法测试

fuz*_*zes 4 jestjs typegraphql

我正在使用 typegraphql,并且我使用 resgiterEnumType 注册 DayOfWeek 枚举类型。

以下是我的 enum 和 registerEnumType 函数,它们在一个文件中。

export enum DayOfWeek {
    SUNDAY,
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY
}

registerEnumType(DayOfWeek, {
    name: "DayOfWeekType", // this one is mandatory
});
Run Code Online (Sandbox Code Playgroud)

当我运行程序时它运行良好。但是当我运行 jest test 时,我收到如下消息

Looks like you've forgot to provide experimental metadata API polyfill.
  12 | }
  13 | 
> 14 | registerEnumType(DayOfWeek, {
     | ^
  15 |     name: "DayOfWeekType", // this one is mandatory
  16 | });
  17 | 
Run Code Online (Sandbox Code Playgroud)

如果我将 enum 和 registerEnumType 放在同一个文件中,则运行良好,测试失败。

如果我将 enum 和 registerEnumType 分开,graphql 未找到 DayOfWeek 类型....

我该如何解决?

小智 5

你需要添加

import "reflect-metadata";
Run Code Online (Sandbox Code Playgroud)

在文件顶部


Roy*_*Lee 1

import { Test, TestingModule } from '@nestjs/testing';
import { GraphQLModule } from '@nestjs/graphql';

describe('your test suite', () => {
    beforeEach(async () => {
        const module: TestingModule = await Test.createTestingModule({
            imports: [
                GraphQLModule.forRoot({
                    ... 
                }),
            ],
        }).compile();

    });
});
Run Code Online (Sandbox Code Playgroud)

您需要GraphQLModule在规范中进行配置。

P/S:上面的代码片段假设您在NestJS框架上。