Использование JEST для запуска Angular теста компонента не может найти модуль - PullRequest
0 голосов
/ 13 января 2020

Использование Jest в первый раз. Использовал следующий код для инициализации тестирования компонента:

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

  beforeEach(async(() => {
    TestBed.configureTestingModule({
        declarations: [ CreateQuoteComponent ]
    });
    fixture = TestBed.createComponent(CreateQuoteComponent);
    component = fixture.componentInstance;
  }));

  test('should exist', () => {
    expect(component).toBeDefined();
  });
});

При запуске для некоторых операций импорта в компоненте выдается

Test suite failed to run Cannot find module' with ' 
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:259:17)
      at Object.<anonymous> (src/app/modules/xxx/components/landing/create/create.component.ts:19:1)

какие-либо выводы для этого или есть известный обходной путь?

1 Ответ

1 голос
/ 13 января 2020

Я понял проблему. Кажется, JEST не может разрешить относительные пути, которые мы настраиваем внутри приложения, такие как знаки '@', поэтому нам нужно предоставить jest moduleNameMapper, как показано ниже:

"jest": {
    "preset": "jest-preset-angular",
    "setupTestFrameworkScriptFile": "<rootDir>/src/jest.ts",
    "moduleNameMapper": {
      "@oshc(.*)": "<rootDir>/src/app/modules/oshc/$1",
      "@shared(.*)": "<rootDir>/src/app/@shared/$1"
    }

},

ОБНОВЛЕНИЕ: будет Другая проблема JEST не может найти модули внутри node_modules вашей папки root. Для этого добавьте следующую конфигурацию jest для каталогов модулей: "moduleDirectories": ["node_modules", "sr c"]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...