首页 > 解决方案 > 错误:循环依赖 - NestJS 测试

问题描述

当我创建我的控制器的测试时,我收到以下错误:

检测到循环依赖。请确保双向关系的每一边都用“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();

标签: javascriptunit-testingjestjsnestjs

解决方案


对于您的主要服务,您使用的是 Mock?您可能没有使用模拟或名称错误。


推荐阅读