Mar*_*ães 4 node.js typescript nestjs
我从Nest.js开始,创建服务后出现错误:
Nest无法解析PhotoService的依赖项(?)。请验证[0]参数在当前上下文中是否可用。
我正在跟踪数据库示例:https : //docs.nestjs.com/techniques/database
这是我的完整代码:https : //github.com/marceloHashzen/nestjsbasics
在您从提供者中app.module.ts删除PhotoService。比进PhotoModule,只是出口PhotoService:
@Module({
// ...prev code
exports: [PhotoService],
})
Run Code Online (Sandbox Code Playgroud)
请从 中删除任何providers和。即使它们是由 CLI 工具添加的。controllersapp.module.ts
在app.module.ts你应该只加载其他模块imports
imports: [
WaterModule,
FireModule,
AirModule,
EarthModule,
]
Run Code Online (Sandbox Code Playgroud)
是由每个具体模块来明确定义什么imports,providers以及exports可以使用什么。
在:fire.module.ts
@Module({
imports: [TypeOrmModule.forFeature([FireRepository])],
controllers: [FireController],
providers: [FireService],
exports: [FireService],
})
export class FireModule {}
Run Code Online (Sandbox Code Playgroud)
对我有帮助的是在测试中使用 PhotoService 的模拟。文档很有帮助https://docs.nestjs.com/fundamentals/custom-providers
或者看看我写的测试规范。
import { Test, TestingModule } from '@nestjs/testing';
import { PhotoController } from './photo.controller';
import { PhotoService } from './photo.service';
describe('PhotoController', () => {
let module: TestingModule;
let photoController: PhotoController;
let photoService: PhotoService;
const resultAll = ['test'];
const mockPhotoService = {
findAll: () => (resultAll),
};
const photoServiceProvider = {
provide: PhotoService,
useValue: mockPhotoService,
};
beforeAll(async () => {
module = await Test.createTestingModule({
controllers: [PhotoController],
providers: [photoServiceProvider],
}).compile();
photoService = module.get<PhotoService>(PhotoService);
photoController = module.get<PhotoController>(PhotoController);
});
describe('findAll', () => {
it('should return collection of photos', async () => {
jest.spyOn(photoService, 'findAll').mockImplementation(() => resultAll);
expect(await photoController.findAll()).toBe(resultAll);
});
});
});
Run Code Online (Sandbox Code Playgroud)
让我知道它是否也对您有帮助
| 归档时间: |
|
| 查看次数: |
3097 次 |
| 最近记录: |