我有一个PlayersModule和一个ItemsModule.
我想用ItemsService在PlayersService.
当我通过注射添加它时:
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.这两项服务都在他们的模块中单独工作.
这是 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) 我想为我的 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) 我正在寻找一种用 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) 我目前正在尝试获取“超级测试”请求的响应对象。
\n如果我在没有等待的情况下调用 get,我会得到一个 httpCode 200,但没有正文:
\nimport { 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});\nRun Code Online (Sandbox Code Playgroud)\nJest 给了我以下输出。但我无法引用 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)