为什么端点不能从导入的 NESTJS 模块工作
Why endpoints not working from imported NESTJS module
请告诉我为什么 appController 工作而 itemsController 不工作(来自导入的模块)
我学习了nestjs,我是根据文档做的。该控制器正在使用其取消注释的端点。
import {Controller, Get} from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor() {}
// @Get()
// getHome():string {
// return 'Hello world!';
// }
}
itemsController.ts - 如果在此 appController.ts 上更改 appController.ts,则工作正常
import {Controller, Get, HttpException, HttpStatus, Param, Post, Res} from "@nestjs/common";
import {Response} from "express";
import {ItemsService} from "./items.service";
import {ItemDto} from "./dto/item.dto";
@Controller()
export class ItemsController {
constructor(private readonly itemsService: ItemsService) {}
@Get()
getAll(@Res({passthrough: true}) res: Response):string | object {
const items = this.itemsService.getAll();
if(!!items.length) {
res.status(HttpStatus.OK);
return new HttpException({
items: items
}, HttpStatus.OK).getResponse();
}
res.status(HttpStatus.INTERNAL_SERVER_ERROR);
return new HttpException({
items: 'Items length: ' + items.length,
status: HttpStatus.INTERNAL_SERVER_ERROR
}, HttpStatus.INTERNAL_SERVER_ERROR).getResponse();
}
@Post()
create(@Param() params):ItemDto {
return this.itemsService.create(params);
}
}
测试笑话是否有效:
import { Test } from '@nestjs/testing';
import { ItemsController } from './items/items.controller';
import { ItemsService } from './items/items.service';
import * as request from 'supertest';
import { INestApplication } from "@nestjs/common";
describe('ItemsModule', () => {
let itemsController: ItemsController;
let itemsService: ItemsService;
let app: INestApplication;
beforeEach(async () => {
const moduleRef = await Test.createTestingModule({
controllers: [ItemsController],
providers: [ItemsService],
}).compile();
itemsService = moduleRef.get<ItemsService>(ItemsService);
itemsController = moduleRef.get<ItemsController>(ItemsController);
app = moduleRef.createNestApplication();
await app.init();
});
describe('End-points', () => {
it('/GET Status 200', () => {
return request(app.getHttpServer())
.get('/')
.expect(200)
.expect({
"items": [
{
id: '0',
title: '',
message: ''
}
]
});
});
it('/GET Status 500', () => {
return request(app.getHttpServer())
.get('/')
.expect(500)
.expect({
items: 'Items length: 0',
status: 500
});
});
});
});
我全部推到了github,大家可以看到code
查看您的源代码后,您在 ItemsModule
中缺少 @Module()
的 @
请告诉我为什么 appController 工作而 itemsController 不工作(来自导入的模块)
我学习了nestjs,我是根据文档做的。该控制器正在使用其取消注释的端点。
import {Controller, Get} from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor() {}
// @Get()
// getHome():string {
// return 'Hello world!';
// }
}
itemsController.ts - 如果在此 appController.ts 上更改 appController.ts,则工作正常
import {Controller, Get, HttpException, HttpStatus, Param, Post, Res} from "@nestjs/common";
import {Response} from "express";
import {ItemsService} from "./items.service";
import {ItemDto} from "./dto/item.dto";
@Controller()
export class ItemsController {
constructor(private readonly itemsService: ItemsService) {}
@Get()
getAll(@Res({passthrough: true}) res: Response):string | object {
const items = this.itemsService.getAll();
if(!!items.length) {
res.status(HttpStatus.OK);
return new HttpException({
items: items
}, HttpStatus.OK).getResponse();
}
res.status(HttpStatus.INTERNAL_SERVER_ERROR);
return new HttpException({
items: 'Items length: ' + items.length,
status: HttpStatus.INTERNAL_SERVER_ERROR
}, HttpStatus.INTERNAL_SERVER_ERROR).getResponse();
}
@Post()
create(@Param() params):ItemDto {
return this.itemsService.create(params);
}
}
测试笑话是否有效:
import { Test } from '@nestjs/testing';
import { ItemsController } from './items/items.controller';
import { ItemsService } from './items/items.service';
import * as request from 'supertest';
import { INestApplication } from "@nestjs/common";
describe('ItemsModule', () => {
let itemsController: ItemsController;
let itemsService: ItemsService;
let app: INestApplication;
beforeEach(async () => {
const moduleRef = await Test.createTestingModule({
controllers: [ItemsController],
providers: [ItemsService],
}).compile();
itemsService = moduleRef.get<ItemsService>(ItemsService);
itemsController = moduleRef.get<ItemsController>(ItemsController);
app = moduleRef.createNestApplication();
await app.init();
});
describe('End-points', () => {
it('/GET Status 200', () => {
return request(app.getHttpServer())
.get('/')
.expect(200)
.expect({
"items": [
{
id: '0',
title: '',
message: ''
}
]
});
});
it('/GET Status 500', () => {
return request(app.getHttpServer())
.get('/')
.expect(500)
.expect({
items: 'Items length: 0',
status: 500
});
});
});
});
我全部推到了github,大家可以看到code
查看您的源代码后,您在 ItemsModule
@Module()
的 @