node.js - 测试时未找到 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 存储库,我使用的是getRepository
TypeORM 中的方法
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']
})
}
解决方案
推荐阅读
- javascript - 使用nodeJS登录像pm2这样的表
- dataweave - 使用 p() 函数 mule 在 dataweave 2.0 中获取安全属性
- android - 当应用程序在android上恢复时,React Native StatusBar translucent 未设置为true
- ansible - Ansible:按特定字段比较两个数组
- php - 使用 php 的 Wordpress 自定义小部件
- r - 如何处理具有不同长度的列表?
- r - 使用 reshape 包重塑数据库
- azure-data-factory-2 - 无法在复制数据工具中连接到 SFTP(带有私钥文件)
- python - Numpy矢量化:查找列表和列表列表之间的交集
- angular - 角度编译错误“NgModule”调用“ɵmakeDecorator”