【发布时间】:2021-02-19 23:28:15
【问题描述】:
我尝试在使用 typeorm 存储库的类中测试一个函数。
为了编写我的测试类,我在 github 上使用这个例子:https://github.com/jmcdo29/testing-nestjs/blob/master/apps/typeorm-sample/src/cat/cat.service.spec.ts
import { Injectable } from '@nestjs/common';
import { InjectRepository, getRepositoryToken } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Contact } from './contact.entity';
import { CreateContactDto } from './dto/createContact.dto';
import { ContactService } from './contact.service';
import { Test, TestingModule } from '@nestjs/testing';
const myContact: CreateContactDto = {email: "email@email.com", subject: "mySubject", content: "MyContent"};
describe('ContactService', () => {
let service: ContactService;
let repo: Repository<Contact>;
beforeEach(async() => {
const module: TestingModule = await Test.createTestingModule({
providers: [
ContactService,
{
provide: getRepositoryToken(Contact),
useValue: {
save: jest.fn().mockRejectedValue(myContact),
find: jest.fn().mockRejectedValue(myContact),
},
},
],
}).compile();
service = module.get<ContactService>(ContactService);
repo = module.get<Repository<Contact>>(getRepositoryToken(Contact))
});
describe('createContact', () => {
it('createContact Ok', async () => {
const myNewContact: CreateContactDto = {email: "email@email.com", subject: "mySubject", content: "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();
}
}
感谢您的帮助!
【问题讨论】:
-
包含您认为以文本而非图像形式重现问题所需的所有代码
标签: typescript jestjs nestjs