我正在尝试向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想创建一个新的数据库只是为了测试,我不知道如何做到这一点,我发现没有任何网上为我工作。如果有人能帮忙就太好了
1条答案
按热度按时间1yjd4xko1#
在查看了一下之后,我发现我的测试流没有初始化AppDataSource
在我把它加到我的beforeAll一切工作正常