EntityMetadataNotFoundError:在带有jest的typeorm项目中没有实体的元数据

izkcnapc  于 12个月前  发布在  Jest
关注(0)|答案(1)|浏览(228)

我正在尝试向express/typeorm项目添加测试。我得到了错误

throw new error_1.EntityMetadataNotFoundError(target);
                  ^

EntityMetadataNotFoundError: No metadata for "Game" was found.
    at DataSource.getMetadata (/home/nathanfouere/Documents/AubiaChallenge/src/data-source/DataSource.ts:444:30)
    at Repository.get metadata [as metadata] (/home/nathanfouere/Documents/AubiaChallenge/src/repository/Repository.ts:53:40)
    at Repository.findOne (/home/nathanfouere/Documents/AubiaChallenge/src/repository/Repository.ts:577:42)
    at GameService.<anonymous> (/home/nathanfouere/Documents/AubiaChallenge/src/services/GameService.ts:60:61)
    at step (/home/nathanfouere/Documents/AubiaChallenge/src/services/GameService.ts:33:23)
    at Object.next (/home/nathanfouere/Documents/AubiaChallenge/src/services/GameService.ts:14:53)
    at /home/nathanfouere/Documents/AubiaChallenge/src/services/GameService.ts:8:71
    at new Promise (<anonymous>)

以下是我的测试:

import {GameService} from "../services/GameService";
import {aGame, aTemporarySocialClassHappinessModifier, aWorker} from "./Builders/Builders";

describe('Temporary social class modifier test', () => {
    test('adds temporary social class happiness modifier', () => {
        let duration = 4;
        let temporarySocialClassHappinessModifier = aTemporarySocialClassHappinessModifier()
            .withDuration(duration)
            .withValue(40)
            .build();
        let worker = aWorker()
            .withSocialClassHappinessModifiers([temporarySocialClassHappinessModifier])
            .build();
        let game = aGame()
            .build();
        let gameService = new GameService();
        expect(worker.socialClassHappinessModifiers).toContain(temporarySocialClassHappinessModifier);
        for (let i = 0; i < duration; i++) {
            gameService.nextTurn();
        }
        expect(worker.socialClassHappinessModifiers).toContain(temporarySocialClassHappinessModifier);
    });
});

以下是我的游戏实体:

import {Column, Entity, PrimaryGeneratedColumn} from "typeorm";
@Entity()
export class Game {
    @PrimaryGeneratedColumn()
    id: number

    @Column()
    numberOfTurns: number
}

下面是我的tsconfig.json

{
   "compilerOptions": {
      "lib": [
         "es5",
         "es6"
      ],
      "target": "es5",
      "module": "commonjs",
      "moduleResolution": "node",
      "outDir": "./build",
      "emitDecoratorMetadata": true,
      "experimentalDecorators": true,
      "sourceMap": true
   },
   "include": ["src/entity/Game.ts"]
}

下面是我的jest.config.js

module.exports = {
    preset: 'ts-jest',
    testEnvironment: 'node',
    testMatch: ['**/src/tests/**/*.test.ts'],
};

下面是我的data-source.ts文件:

import "reflect-metadata"
import { DataSource } from "typeorm"
import {PoliticalParty} from "./entity/PoliticalParty";
import {Region} from "./entity/Map/Region";
import {Workers} from "./entity/SocialClass/SocialClass";
import {Capitalists} from "./entity/SocialClass/SocialClass";
import {MixedProperty, PrivateProperty, Property, PublicProperty} from "./entity/Property/Property";
import {Game} from "./entity/Game";
import {StateSocialClass} from "./entity/SocialClass/SocialClass";
import {State} from "./entity/State/State";
import {Product} from "./entity/Products/Product";
import {SocialClassHappinessModifier} from "./entity/HappinessModifier/SocialClassHappinessModifier/SocialClassHappinessModifier";
import {PoliticalPartyHappinessModifier} from "./entity/HappinessModifier/PoliticalPartyHappinessModifier/PoliticalPartyHappinessModifier";
import {SocialClass} from "./entity/SocialClass/SocialClass";

export const AppDataSource = new DataSource({
    type: "postgres",
    host: "localhost",
    port: 5432,
    username: "postgres",
    password: "postgres",
    database: "postgres",
    synchronize: true,
    logging: false,

    entities: [
        PoliticalParty,
        Region,
        Workers,
        Capitalists,
        Workers,
        Capitalists,
        Property,
        Game,
        StateSocialClass,
        State,
        Product,
        SocialClassHappinessModifier,
        PoliticalPartyHappinessModifier,
        SocialClass,
        PublicProperty,
        MixedProperty,
        PrivateProperty,
    ],
    migrations: [],
    subscribers: [],
})

我不espcially想创建一个新的数据库只是为了测试,我不知道如何做到这一点,我发现没有任何网上为我工作。如果有人能帮忙就太好了

1yjd4xko

1yjd4xko1#

在查看了一下之后,我发现我的测试流没有初始化AppDataSource
在我把它加到我的beforeAll一切工作正常

相关问题