相关疑难解决方法(0)

从另一个模块注入nestjs服务

我有一个PlayersModule和一个ItemsModule.

我想用ItemsServicePlayersService.

当我通过注射添加它时:

import { Injectable } from '@nestjs/common';
import { InjectModel } from 'nestjs-typegoose';
import { ModelType, Ref } from 'typegoose';
import { Player } from './player.model';
import { Item } from '../items/item.model';
import { ItemsService } from '../items/items.service';

@Injectable()
export class PlayersService {
    constructor(
        @InjectModel(Player) private readonly playerModel: ModelType<Player>,
        private readonly itemsService: ItemsService){}
Run Code Online (Sandbox Code Playgroud)

我得到这个嵌套错误:

[Nest] 11592 - 2018-8-13 11:42:17 [ExceptionHandler] Nest无法解析PlayersService(+ ,?)的依赖关系.请确保索引[1]的参数在当前上下文中可用.

两个模块都导入了app.module.ts.这两项服务都在他们的模块中单独工作.

javascript node.js nestjs

20
推荐指数
4
解决办法
8423
查看次数

将TypeORM存储库注入NestJS服务以进行模拟数据测试

有关如何在本期中执行此操作的讨论很长时间。

我已经尝试了许多建议的解决方案,但是运气并不好。

谁能提供一个具体示例,说明如何使用注入的存储库和模拟数据测试服务?

javascript node.js typescript nestjs

9
推荐指数
4
解决办法
4072
查看次数

在 NestJS 中测试解析器

这是 NestJs 中的一个示例resolver,我即将为此文件编写测试。但是nestjs文档中没有测试解析器的文档。

我已经对我的 进行了测试service,但是解析器内部也可能没有什么逻辑,所以最好也对它们进行测试。

我如何测试resolver文件?

import { ObjectId } from 'mongodb';
import { AuthGuard } from '../utils/Auth.guards';
import { UseGuards } from '@nestjs/common';
import { IUser } from '../users/users.service';
import { User } from '../utils/user.decorator';
import { Query, Resolver, Mutation, Args } from '@nestjs/graphql';
import { AccessService } from './access.service';
import { NeedAccess } from '../utils/needAccess.decorator';
import { HasAccess } from '../utils/access.decorator';

@Resolver('Accesss')
@UseGuards(AuthGuard)
export class AccessResolvers {
  constructor(private readonly accessService: AccessService) {} …
Run Code Online (Sandbox Code Playgroud)

javascript node.js typescript jestjs nestjs

8
推荐指数
1
解决办法
6370
查看次数

如何开玩笑模拟 Nestjs 导入?

我想为我的 Nestjs“课程”存储库服务(依赖于 Mongoose 模型和 Redis 的服务)编写一个单元测试。

课程.存储库.ts:

    import { Injectable, HttpException, NotFoundException } from "@nestjs/common";
    import { InjectModel } from "@nestjs/mongoose"
    import { Course } from "../../../../shared/course";
    import { Model } from "mongoose";
    import { RedisService } from 'nestjs-redis';


    @Injectable({}) 
    export class CoursesRepository {

      private redisClient;
      constructor(
        @InjectModel('Course') private courseModel: Model<Course>,
        private readonly redisService: RedisService,
      ) {
        this.redisClient = this.redisService.getClient();

      }


      async findAll(): Promise<Course[]> {
        const courses = await this.redisClient.get('allCourses');
        if (!courses) {
          console.log('return from DB');
          const mongoCourses = await …
Run Code Online (Sandbox Code Playgroud)

unit-testing node.js typescript jestjs nestjs

8
推荐指数
2
解决办法
2万
查看次数

使用 Jest 测试 NestJs 服务

我正在寻找一种用 Jest测试我的NestJs PlayerController 的方法。我的控制器和服务声明:

import { QueryBus, CommandBus, EventBus } from '@nestjs/cqrs';

/**
 * The service assigned to query the database by means of commands
 */
@Injectable()
export class PlayerService {
    /**
     * Ctor
     * @param queryBus
     */
    constructor(
        private readonly queryBus: QueryBus,
        private readonly commandBus: CommandBus,
        private readonly eventBus: EventBus
    ) { }


@Controller('player')
@ApiUseTags('player')
export class PlayerController {
    /**
     * Ctor
     * @param playerService
     */
    constructor(private readonly playerService: PlayerService) { }
Run Code Online (Sandbox Code Playgroud)

我的测试:

describe('Player Controller', () => …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing node.js jestjs nestjs

3
推荐指数
1
解决办法
8046
查看次数

NestJs 和 Jest:等待请求抛出 404

我目前正在尝试获取“超级测试”请求的响应对象。

\n

如果我在没有等待的情况下调用 get,我会得到一个 httpCode 200,但没有正文:

\n
import { Test, TestingModule } from '@nestjs/testing';\n\nimport { AuthModule } from './auth.module';\nimport { INestApplication } from '@nestjs/common';\nimport * as request from 'supertest';\n\ndescribe('AuthService', () => {\n   let app: INestApplication;\n   beforeAll(async () => {\n     const module: TestingModule = await Test.createTestingModule({\n  providers: [AuthModule]\n}).compile();\napp = module.createNestApplication();\nawait app.init();\n});\n\nit('should be defined', async () => {\nconst res = request(app.getHttpServer())\n  .get('/')\n  .expect(200);\n\n});\n\nafterAll(async () => {\n  app.close();\n});\n});\n
Run Code Online (Sandbox Code Playgroud)\n

Jest 给了我以下输出。但我无法引用 res.body

\n
  AuthService\n\xe2\x88\x9a should be defined (5ms)\n\nTest Suites: 1 passed, 1 total\nTests: …
Run Code Online (Sandbox Code Playgroud)

integration-testing node.js typescript jestjs nestjs

1
推荐指数
1
解决办法
4693
查看次数