Nest.js 无法解析依赖关系

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

我一直在尝试解决这两个问题,但是无论我尝试检查并修复所有代码和每个存储库的位置,它们都没有解决。

第一个错误

 FAIL  src/users/users.service.spec.ts
  ● UsersService › should be defined

    Nest can't resolve dependencies of the UsersService (?). Please make sure that the argument "UserRepository" at index [0] is available in the RootTestModule context.

    Potential solutions:
    - Is RootTestModule a valid NestJS module?
    - If "UserRepository" is a provider, is it part of the current RootTestModule?
    - If "UserRepository" is exported from a separate @Module, is that module imported within RootTestModule?
      @Module({
        imports: [ /* the Module containing "UserRepository" */ ]
      })

       6 |
       7 |   beforeEach(async () => {
    >  8 |     const module: TestingModule = await Test.createTestingModule({
         |                                   ^
       9 |       providers: [UsersService],
      10 |     }).compile();
      11 |

      at TestingInjector.lookupComponentInParentModules (../node_modules/@nestjs/core/injector/injector.js:254:19)
      at TestingInjector.resolveComponentInstance (../node_modules/@nestjs/core/injector/injector.js:207:33)
      at TestingInjector.resolveComponentInstance (../node_modules/@nestjs/testing/testing-injector.js:19:45)
      at resolveParam (../node_modules/@nestjs/core/injector/injector.js:128:38)
          at async Promise.all (index 0)
      at TestingInjector.resolveConstructorParams (../node_modules/@nestjs/core/injector/injector.js:143:27)
      at TestingInjector.loadInstance (../node_modules/@nestjs/core/injector/injector.js:70:13)
      at TestingInjector.loadProvider (../node_modules/@nestjs/core/injector/injector.js:97:9)
      at ../node_modules/@nestjs/core/injector/instance-loader.js:56:13
          at async Promise.all (index 3)
      at TestingInstanceLoader.createInstancesOfProviders (../node_modules/@nestjs/core/injector/instance-loader.js:55:9)
      at ../node_modules/@nestjs/core/injector/instance-loader.js:40:13
          at async Promise.all (index 1)
      at TestingInstanceLoader.createInstances (../node_modules/@nestjs/core/injector/instance-loader.js:39:9)
      at TestingInstanceLoader.createInstancesOfDependencies (../node_modules/@nestjs/core/injector/instance-loader.js:22:13)
      at TestingInstanceLoader.createInstancesOfDependencies (../node_modules/@nestjs/testing/testing-instance-loader.js:9:9)
      at TestingModuleBuilder.createInstancesOfDependencies (../node_modules/@nestjs/testing/testing-module.builder.js:118:9)
      at TestingModuleBuilder.compile (../node_modules/@nestjs/testing/testing-module.builder.js:74:9)
      at Object.<anonymous> (users/users.service.spec.ts:8:35)

用户.service.spec.ts

import { Test, TestingModule } from '@nestjs/testing';
import { UsersService } from './users.service';

describe('UsersService', () => {
  let service: UsersService;

  beforeEach(async () => {
    const module: TestingModule = await Test.createTestingModule({
      providers: [UsersService],
    }).compile();

    service = module.get<UsersService>(UsersService);
  });

  it('should be defined', () => {
    expect(service).toBeDefined();
  });
});

第二个错误

失败 src/users/users.controller.spec.ts ● UsersController › 应定义

Nest can't resolve dependencies of the UsersController (?, AuthService). Please make sure that the argument UsersService at index [0] is available in the RootTestModule context.

Potential solutions:
- Is RootTestModule a valid NestJS module?
- If UsersService is a provider, is it part of the current RootTestModule?
- If UsersService is exported from a separate @Module, is that module imported within RootTestModule?
  @Module({
    imports: [ /* the Module containing UsersService */ ]
  })

   6 |
   7 |   beforeEach(async () => {
>  8 |     const module: TestingModule = await Test.createTestingModule({
     |                                   ^
   9 |       controllers: [UsersController],
  10 |     }).compile();
  11 |

  at TestingInjector.lookupComponentInParentModules (../node_modules/@nestjs/core/injector/injector.js:254:19)
  at TestingInjector.resolveComponentInstance (../node_modules/@nestjs/core/injector/injector.js:207:33)
  at TestingInjector.resolveComponentInstance (../node_modules/@nestjs/testing/testing-injector.js:19:45)
  at resolveParam (../node_modules/@nestjs/core/injector/injector.js:128:38)
      at async Promise.all (index 0)
  at TestingInjector.resolveConstructorParams (../node_modules/@nestjs/core/injector/injector.js:143:27)
  at TestingInjector.loadInstance (../node_modules/@nestjs/core/injector/injector.js:70:13)
  at TestingInjector.loadController (../node_modules/@nestjs/core/injector/injector.js:88:9)
  at ../node_modules/@nestjs/core/injector/instance-loader.js:68:13
      at async Promise.all (index 0)
  at TestingInstanceLoader.createInstancesOfControllers (../node_modules/@nestjs/core/injector/instance-loader.js:67:9)
  at ../node_modules/@nestjs/core/injector/instance-loader.js:42:13
      at async Promise.all (index 1)
  at TestingInstanceLoader.createInstances (../node_modules/@nestjs/core/injector/instance-loader.js:39:9)
  at TestingInstanceLoader.createInstancesOfDependencies (../node_modules/@nestjs/core/injector/instance-loader.js:22:13)
  at TestingInstanceLoader.createInstancesOfDependencies (../node_modules/@nestjs/testing/testing-instance-loader.js:9:9)
  at TestingModuleBuilder.createInstancesOfDependencies (../node_modules/@nestjs/testing/testing-module.builder.js:118:9)
  at TestingModuleBuilder.compile (../node_modules/@nestjs/testing/testing-module.builder.js:74:9)
  at Object.<anonymous> (users/users.controller.spec.ts:8:35)

用户.控制器.规格.ts

import { Test, TestingModule } from '@nestjs/testing';
import { AppController } from './app.controller';
import { AppService } from './app.service';

describe('AppController', () => {
  let appController: AppController;

  beforeEach(async () => {
    const app: TestingModule = await Test.createTestingModule({
      controllers: [AppController],
      providers: [AppService],
    }).compile();

    appController = app.get<AppController>(AppController);
  });

  describe('root', () => {
    it('should return "Hello World!"', () => {
      expect(appController.getHello()).toBe('Hello World!');
    });
  });
});
database testing controller nestjs backend
1个回答
0
投票

关于第一个错误,您已将

UsersService
注册到测试模块中,但没有提供其所有依赖项(即
"UserRepository"
),那么您期望nestjs如何解决它们?使用自动模拟功能

很容易解决

其他示例在这里:https://github.com/jmcdo29/testing-nestjs

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