如何求解“ opoceolvedValue”错误:“类型<value>的参数不可分配给类型'从不'的参数'?

问题描述 投票:0回答:1

我需要在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)

有人有类似的问题吗?我无法继续进行,因为我无法获得代码来停止错误。

typescript jestjs nestjs prisma
1个回答
0
投票

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); }); });

当然,您应该安装上述软件包。
希望有帮助

© www.soinside.com 2019 - 2024. All rights reserved.