Error: Circular dependency - NestJS Testing
Error: Circular dependency - NestJS Testing
当我创建控制器测试时出现以下错误:
A circular dependency has been detected. Please make sure that each
side of a bidirectional relationship is decorated with "forwardRef()"
// category.service.ts
constructor(
@InjectModel(Category.name) private categoryModel: Model<CategoryDocument>,
private readonly subcategoriesService: SubcategoriesService,
) {}
// category.controller.spec.ts
describe('V1CategoriesController', () => {
let categoriesController: CategoriesController;
let categoriesService: CategoriesService;
beforeEach(async () => {
const moduleRef: TestingModule = await Test.createTestingModule({
controllers: [CategoriesController],
providers: [CategoriesService, SubcategoriesService],
}).compile();
categoriesController = moduleRef.get<CategoriesController>(
CategoriesController,
);
categoriesService = moduleRef.get<CategoriesService>(CategoriesService);
jest.clearAllMocks();
});
it('CategoriesController - should be defined', () => {
expect(categoriesController).toBeDefined();
});
});
我尝试创建一个 SubcategoriesService Mock,但我不确定这样做是否正确
const SubcategoriesService = jest.fn().mockReturnValue({
findByCategory: jest.fn().mockResolvedValue([]),
});
const moduleRef: TestingModule = await Test.createTestingModule({
controllers: [CategoriesController],
providers: [CategoriesService, { provide: 'SubcategoriesService', useFactory: SubcategoriesService },],
}).compile();
对于您的主要服务,您使用的是 Mock 吗?
有可能您没有使用模拟或者它的名称有误。
当我创建控制器测试时出现以下错误:
A circular dependency has been detected. Please make sure that each side of a bidirectional relationship is decorated with "forwardRef()"
// category.service.ts
constructor(
@InjectModel(Category.name) private categoryModel: Model<CategoryDocument>,
private readonly subcategoriesService: SubcategoriesService,
) {}
// category.controller.spec.ts
describe('V1CategoriesController', () => {
let categoriesController: CategoriesController;
let categoriesService: CategoriesService;
beforeEach(async () => {
const moduleRef: TestingModule = await Test.createTestingModule({
controllers: [CategoriesController],
providers: [CategoriesService, SubcategoriesService],
}).compile();
categoriesController = moduleRef.get<CategoriesController>(
CategoriesController,
);
categoriesService = moduleRef.get<CategoriesService>(CategoriesService);
jest.clearAllMocks();
});
it('CategoriesController - should be defined', () => {
expect(categoriesController).toBeDefined();
});
});
我尝试创建一个 SubcategoriesService Mock,但我不确定这样做是否正确
const SubcategoriesService = jest.fn().mockReturnValue({
findByCategory: jest.fn().mockResolvedValue([]),
});
const moduleRef: TestingModule = await Test.createTestingModule({
controllers: [CategoriesController],
providers: [CategoriesService, { provide: 'SubcategoriesService', useFactory: SubcategoriesService },],
}).compile();
对于您的主要服务,您使用的是 Mock 吗? 有可能您没有使用模拟或者它的名称有误。