首页 > 解决方案 > 测试时未找到 TypeORM 连接

问题描述

我正在通过创建一个简单的应用程序来研究使用 TDD 的干净架构,并且我正在尝试在我的基础设施层上实现 UserRepository,但ConnectionNotFoundError: Connection "default" was not found.即使在运行测试本身之前建立了连接之后,我也会收到此错误。

开玩笑错误

这是我的 UserEntity 类。

import { PrimaryColumn, Column, CreateDateColumn, UpdateDateColumn, Entity } from 'typeorm'

@Entity('users')
export class UserEntity {
  @PrimaryColumn('uuid')
  id: string

  @Column()
  name: string

  @Column({ unique: true })
  email: string

  @Column()
  password: string

  @CreateDateColumn()
  created_at: Date

  @UpdateDateColumn()
  updated_at: Date
}

在这个 UserRepository 中,我正在实现一个CreateUserRepository具有以下create方法的方法。要读取 TypeORM 存储库,我使用的是getRepositoryTypeORM 中的方法

import { getRepository, Repository } from 'typeorm'

import { CreateUserRepositoryDTO, CreateUserRepository } from '../../../../data/protocols/db/user/CreateUserRepository'
import { UserModel } from '../../../../domain/models/UserModel'
import { UserEntity } from '../entities/UserEntity'

export class UserRepository implements CreateUserRepository {
  private ormRepository: Repository<UserEntity>

  constructor () {
    this.ormRepository = getRepository(UserEntity)
  }

  async create (userData: CreateUserRepositoryDTO): Promise<UserModel> {
    const user = await this.ormRepository.create(userData)
    const result = await this.ormRepository.save(user)
    return result
  }
}

import { mockCreateUserRepositoryDTO } from '../../test/mockCreateUserRepositoryDTO'
import { createTestConnection } from '../helpers/TypeORMHelper'
import { UserRepository } from './UserRepository'

describe('UserRepository', () => {
  it('Should return User on create Success', async () => {
    await createTestConnection()
    const userData = mockCreateUserRepositoryDTO()
    const sut = new UserRepository()
    const user = await sut.create(userData)
    console.log(user)
  })
})

import { createConnection, Connection, ConnectionOptions } from 'typeorm'

import { postgresCreds, schemaConfig } from '../../../../../ormconfig'

async function createDbConnection (options: ConnectionOptions): Promise<Connection> {
  try {
    const connection: Connection = await createConnection(options)
    console.log(`TypeORM Connected to ${options.database}`)
    return connection
  } catch (err) {
    console.log('Problem with TypeORM connection')
    throw err.message
  }
}

export async function createTestConnection () {
  return createDbConnection({
    name: 'testConnection',
    type: 'postgres',
    database: 'market-list-test',
    synchronize: false,
    ...postgresCreds,
    ...schemaConfig,
    logging: ['error']
  })
}

标签: node.jstypescripttypeorm

解决方案


推荐阅读