Node.js 无法监视基元值;nestJS中未定义

Node.js 无法监视基元值;nestJS中未定义,node.js,unit-testing,jestjs,nestjs,spyon,Node.js,Unit Testing,Jestjs,Nestjs,Spyon,我知道以前有人问过这个问题,但当我运行服务测试函数时,nestjs中出现了这个错误 这是我的服务代码 user.service.ts import { Injectable,HttpException, HttpCode, HttpStatus } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { Us

我知道以前有人问过这个问题,但当我运行服务测试函数时,nestjs中出现了这个错误

这是我的服务代码

user.service.ts

import { Injectable,HttpException, HttpCode, HttpStatus  } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { User } from './user.entity';
import { UserRegisterAC } from '../application/userRegisterAC';

@Injectable()
export class UserService {

constructor(
@InjectRepository(User)
private readonly userRepository: Repository<User>) {}

async allUsersList(): Promise<User[]> {
 var users = this.userRepository.find();

 if(users==null){
  throw new HttpException("Users not found",HttpStatus.NOT_FOUND)
 }else{
  return users as unknown as User[];
 }
}

async create(userDTO: UserRegisterAC): Promise<User> {
const user = new User();

user.name = userDTO.name;
user.phoneNo = userDTO.phoneNo;
return this.userRepository.save(user);
}
}
这是我的笑话

{
 "moduleFileExtensions": ["js", "json", "ts"],
 "rootDir": ".",
 "testEnvironment": "node",
 "testRegex": ".spec.ts$",
 "transform": {
 "^.+\\.(t|j)s$": "ts-jest"

},
"automock": true

}

我什么都试过了请给我一些建议这里有几点我注意到了

  • 你在嘲笑你正在测试的类,这意味着你的测试毫无意义。您应该模拟它的依赖关系

  • 您没有模拟类的依赖关系,因此Nest无法为您实例化该类,这意味着您得到的是一个
    未定义的
    ,而不是一个类

  • 要解决此问题,您需要执行以下操作:

    beforeach(异步()=>{
    const modRef=wait Test.createTestingModle({
    供应商:[
    用户服务,
    {
    提供:getRepositoryToken(用户),
    useClass:存储库,
    }
    ]
    }).compile();
    service=modRef.get(UserService);
    repository=modRef.get(getREpositoryToken(用户));
    });
    
    现在,您可以在仍然使用服务测试覆盖率的同时模拟存储库方法


    有一个和。请随意看一看,再深入一点。

    您的
    allUsersList
    将在
    服务的
    原型下结束,请尝试

    jest.spyOn(service.prototype,'allUsersList').mockImplementation(() => result); 
    
    {
     "moduleFileExtensions": ["js", "json", "ts"],
     "rootDir": ".",
     "testEnvironment": "node",
     "testRegex": ".spec.ts$",
     "transform": {
     "^.+\\.(t|j)s$": "ts-jest"
    
    },
    "automock": true
    
    }
    
    jest.spyOn(service.prototype,'allUsersList').mockImplementation(() => result);