我需要在Nestjs中为我的项目创建测试文件,但是当将值传递给以下值时,我会遇到问题:MockorvedValue()
我的代码是我的代码:
import { Test, TestingModule } from '@nestjs/testing';
import { AuthService } from './auth.service';
import { PrismaService } from '../prisma/prisma.service';
import { jest } from '@jest/globals';
import { user } from '@prisma/client';
const mockUsers: user[] = [
{
id: 2,
name: 'test',
created_at: new Date(),
modification_date: new Date(),
},
{
id: 2,
name: 'test',
created_at: new Date(),
modification_date: new Date(),
},
];
const db = {
usuario: {
findMany: jest.fn().mockResolvedValue(mockUsers), // <-- Here is where I'm getting the warning
},
};
describe('Auth Service', () => {
let service: AuthService;
let prisma: PrismaService;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [
AuthService,
{
provide: PrismaService,
useValue: db,
},
],
}).compile();
service = module.get<AuthService>(AuthService);
prisma = module.get<PrismaService>(PrismaService);
});
it('should return users from findMany', async () => {
const users = await prisma.usuario.findMany();
expect(users).toEqual(mockUsers);
expect(prisma.usuario.findMany).toHaveBeenCalledTimes(1);
});
});
这是我的模式:
model user {
id Int @id @default(autoincrement())
name String? @db.VarChar(255)
created_at DateTime @default(now()) @db.DateTime(0)
modification_date DateTime @default(now()) @db.DateTime(0)
}
这是警告信息:
Argument of type '{ id: number; name: string; created_at: Date; modification_date: Date; }[]' is not assignable to parameter of type 'never'.ts(2345)
有人有类似的问题吗?我无法继续进行,因为我无法获得代码来停止错误。
import { createMock, DeepMocked } from '@golevelup/ts-jest'; // <--- HERE
import { Test, TestingModule } from '@nestjs/testing';
import { AuthService } from './auth.service';
import { PrismaService } from '../prisma/prisma.service';
import { jest } from '@jest/globals';
import { user } from '@prisma/client';
const mockUsers: user[] = [
{
id: 2,
name: 'test',
created_at: new Date(),
modification_date: new Date(),
},
{
id: 2,
name: 'test',
created_at: new Date(),
modification_date: new Date(),
},
];
describe('Auth Service', () => {
let service: AuthService;
let prisma: DeepMocked<PrismaService>;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [
AuthService,
{
provide: PrismaService,
useFactory: () => createMock<PrismaService>(), // <--- HERE
},
],
}).compile();
service = module.get<AuthService>(AuthService);
prisma = module.get<PrismaService>(PrismaService);
});
it('should return users from findMany', async () => {
prisma.usuario.findMany.mockResolvedValue(mockUsers); // <--- HERE
const users = await prisma.usuario.findMany();
expect(users).toEqual(mockUsers);
expect(prisma.usuario.findMany).toHaveBeenCalledTimes(1);
});
});
当然,您应该安装上述软件包。希望有帮助