Typescript (Jest)ConnectionNotFoundError:Connection“;“违约”;找不到
我尝试在类中测试使用typeorm存储库的函数 为了编写测试类,我在github上使用了以下示例:Typescript (Jest)ConnectionNotFoundError:Connection“;“违约”;找不到,typescript,jestjs,nestjs,Typescript,Jestjs,Nestjs,我尝试在类中测试使用typeorm存储库的函数 为了编写测试类,我在github上使用了以下示例: 从'@nestjs/common'导入{Injectable}; 从'@nestjs/typeorm'导入{InjectRepository,getRepositoryToken}; 从“typeorm”导入{Repository}; 从“./Contact.entity”导入{Contact}; 从“./dto/createContact.dto”导入{CreateContactDto}; 从“
从'@nestjs/common'导入{Injectable};
从'@nestjs/typeorm'导入{InjectRepository,getRepositoryToken};
从“typeorm”导入{Repository};
从“./Contact.entity”导入{Contact};
从“./dto/createContact.dto”导入{CreateContactDto};
从“/contact.service”导入{ContactService};
从'@nestjs/testing'导入{Test,TestingModule};
const myContact:CreateContactDto={email:email@email.com,主题:“我的主题”,内容:“MyContent”};
描述('ContactService',()=>{
让服务:联系服务;
let repo:存储库;
beforeach(异步()=>{
常量模块:TestingModule=等待测试。createTestingModule({
供应商:[
联系服务,
{
提供:getRepositoryToken(联系人),
使用价值:{
保存:jest.fn().mockRejectedValue(myContact),
find:jest.fn().mockRejectedValue(myContact),
},
},
],
}).compile();
服务=模块.get(联系服务);
repo=module.get(getRepositoryToken(联系人))
});
描述('createContact',()=>{
它('createContact Ok',async()=>{
const myNewContact:CreateContactDto={email:email@email.com,主题:“我的主题”,内容:“MyContent”};
const result=await service.createContact(myNewContact);
expect(result.email).toEqual(myNewContact.email);
})
})
});
我没有发现什么问题,我试着注释“repo=module.get…”,结果什么也没变
这是服务类:
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Contact } from './contact.entity';
import { CreateContactDto } from './dto/createContact.dto';
@Injectable()
export class ContactService {
constructor(
@InjectRepository(Contact)
private contactRepository: Repository<Contact>){}
async createContact(createContactDto: CreateContactDto) {
const contact = new Contact();
Object.assign(contact, createContactDto);
return contact.save();
}
async getContacts() {
return this.contactRepository.find();
}
}
从'@nestjs/common'导入{Injectable};
从'@nestjs/typeorm'导入{InjectRepository};
从“typeorm”导入{Repository};
从“./Contact.entity”导入{Contact};
从“./dto/createContact.dto”导入{CreateContactDto};
@可注射()
导出类联系人服务{
建造师(
@输入存储库(联系人)
私有联系人存储库:存储库){}
异步createContact(createContactDto:createContactDto){
常量触点=新触点();
Object.assign(contact,createContactDto);
返回contact.save();
}
异步getContacts(){
返回此.contactRepository.find();
}
}
这就是错误:
谢谢你的帮助 似乎与
新联系人()有关。在您链接的测试示例中,代码使用this.repository.create()
而不是newentity()
。现在来看,很多静态方法
和实例方法都引用了连接
对象,就像save()
一样。如果您改为这样编写createContact
:
异步createContact(createContactDto:createContactDto){
const contact=this.contactRepository.create(createContactDto);
等待此消息。contactRepsitory.save(contact);
回接;
}
你不会有任何问题
编辑:确保还将模拟添加到存储库的测试文件中。创建
方法。否则,您将得到一个关于create
不是函数的错误。包括您认为将问题复制为文本而不是文本所需的所有代码images@YegorAndrosov完成;)谢谢你的帮助。你也需要模拟创建一个函数
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Contact } from './contact.entity';
import { CreateContactDto } from './dto/createContact.dto';
@Injectable()
export class ContactService {
constructor(
@InjectRepository(Contact)
private contactRepository: Repository<Contact>){}
async createContact(createContactDto: CreateContactDto) {
const contact = new Contact();
Object.assign(contact, createContactDto);
return contact.save();
}
async getContacts() {
return this.contactRepository.find();
}
}