【发布时间】:2021-06-07 19:34:37
【问题描述】:
我有nestjs members.service.ts 文件
import { HttpException, Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { FinanceMemberDocument } from './members.schema';
import { Model } from 'mongoose';
import { MemberType } from './members.types';
import { MemberDto } from './dto/members.dto';
@Injectable()
export class MembersService {
constructor(
@InjectModel('finance_members')
private readonly financeMembersModel: Model<FinanceMemberDocument>,
) {}
async getMemberDetails(memberGuid: string): Promise<MemberDto> {
try{
const memberArray = await this.financeMembersModel
.find({ guid: memberGuid })
.sort({ _id: -1 })
.limit(1);
return memberArray[0];
}
catch (err) {
throw new HttpException({ ...err }, err?.response?.status);
}
}
}
这是我的 members.service.spec.ts 文件
import { Test, TestingModule } from '@nestjs/testing';
import { MembersService } from './members.service';
import { MemberType } from './members.types';
import { memberData } from './mockMembersData';
class MemberServiceMock {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
getMemberDetails(_memberId: string) {
return memberData;
}
}
describe('MembersService', () => {
let membersService: MembersService;
beforeAll(async () => {
const ApiServiceProvider = {
provide: MembersService,
useClass: MemberServiceMock,
};
const module: TestingModule = await Test.createTestingModule({
providers: [MembersService, ApiServiceProvider],
}).compile();
membersService = await module.get<MembersService>(MembersService);
});
it('should is defined', () => {
expect(membersService).toBeDefined();
});
it('is not null', () => {
expect(typeof membersService.getMemberDetails).not.toBeNull();
});
it('should get data', async () => {
try{
const data = await membersService.getMemberDetails('123');
expect(data).toEqual(memberData);
}
catch(e) {
console.log(e)
}
});
it('empty member detail', async () => {
await expect(membersService.getMemberDetails('123')).toMatchObject({});
});
});
我尝试了很多方法,但无法涵盖完整的服务文件。有什么方法可以涵盖 service.ts 文件中的所有内容吗? 请帮我覆盖我的服务代码至少 80%
提前致谢
【问题讨论】:
标签: node.js typescript nestjs