将 Swiper 6 升级到 7 后,在单元测试(开玩笑)中找不到模块“swiper_angular”

vhb*_*zan 5 jestjs angular swiper.js

将 Swiper 6 升级到 7后,我在单元测试中遇到问题。我正在使用 Angular 12 和 Swiper 7.3.1。在升级之前,单元测试运行良好(Swiper 版本 6.5.9)。

SwiperModule在测试中使用的是这样的:

import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { of } from 'rxjs';
import { SwiperComponent, SwiperModule } from 'swiper/angular';

import { TeaserWrapperContainerComponent } from './teaser-wrapper-container.component';
import { InterfaceState } from '@migrosonline/shared-deps-all/core/interface/interface.store';


describe('TeaserWrapperContainerComponent', () => {
    let component: TeaserWrapperContainerComponent;
    let fixture: ComponentFixture<TeaserWrapperContainerComponent>;

const mockedSwiperComponent = {
        swiperRef: {
            slideNext: jest.fn(),
            slidePrev: jest.fn(),
            destroy: jest.fn(),
            update: jest.fn()
        }
    } as unknown as SwiperComponent;

beforeEach(
        waitForAsync(() => {
            mockedInterfaceService.prototype.select = jest.fn();

            TestBed.configureTestingModule({
                declarations: [TeaserWrapperContainerComponent],
                imports: [SwiperModule],
                providers: [{ provide: InterfaceService, useClass: mockedInterfaceService }],
                schemas: [CUSTOM_ELEMENTS_SCHEMA]
            }).compileComponents();
        })
    );

    beforeEach(() => {
        fixture = TestBed.createComponent(TeaserWrapperContainerComponent);
        component = fixture.componentInstance;
        component.teaserGroupSliderRef = mockedSwiperComponent;
    });

    it('should create', () => {
        fixture.detectChanges();

        expect(component).toBeTruthy();
    });

});
Run Code Online (Sandbox Code Playgroud)

我得到的错误是这样的:

Cannot find module 'swiper_angular' from 'src/lib/shared/teaser/teaser-wrapper-container/teaser-wrapper-container.component.spec.ts'

      3 | import { of } from 'rxjs';
    > 4 | import { SwiperComponent, SwiperModule } from 'swiper/angular';
Run Code Online (Sandbox Code Playgroud)

我将不胜感激任何想法/意见/建议。

vhb*_*zan 4

如果其他人遇到此问题,该问题与测试的eslint或配置有关,并且已修复,将 添加到(或)文件中的 compilerOptions > 路径:tslintswiper_angulartsconfig.jsontsconfig.spec.json

"compilerOptions": {
    ...
    "paths": {
      "swiper_angular": ["node_modules/swiper/angular"]
    } 
  }
Run Code Online (Sandbox Code Playgroud)

我在 Swiper 问题中找到了解决方案:https://github.com/nolimits4web/swiper/issues/4315