Angular 在多模块文件项目中使用 Jasmine 测试组件

Angular testing a component with Jasmine in a multi module file project

我一直在努力让它工作,只依赖于 httpclient 的服务测试工作正常。然而,当我尝试测试具有这样一些依赖项的组件时(我什至不需要测试本身来显示错误):

describe('test suite name', () => {
 let component: ExampleComponent;
 let fixture: ComponentFixture<ExampleComponent>;
 let testBed;

 let dependencyMock = jasmine.createSpyObj('Dependency', ['action']);

 beforeEach(async () => {
  testBed = await TestBed.configureTestingModule({
  declarations: [ExampleComponent],
  providers: [
    { provide: Dependency, useValue: dependencyMock }
  ],
  imports: [
    // FormsModule,
    // MatDialogModule,
    // BrowserModule,
    // BrowserAnimationsModule,
  ],
 }).compileComponents();
});

});

控制台中出现大量错误,几乎所有错误都是这种类型:

app/someRandomLocation/RandomFile.component.ts:7:30 - error TS2307: Cannot find module 'src/app/someOtherRandomLocation/AnotherRandomFile.ts'.

7 import { AnotherRandomFile } from 'src/app/someOtherRandomLocation/AnotherRandomFile';

我尝试将 AppModule 放入导入中以检查它是否解决了问题,它只是给我带来了更多错误。

这是一个项目,其中有多个 *Module 文件以将它们分开一点。

有人知道我做错了什么吗?

编辑:

令人惊讶的是,在示例中更改路径后,从这里导入:

import { AnotherRandomFile } from 'src/app/someOtherRandomLocation/AnotherRandomFile';

为此:

import { AnotherRandomFile } from '../app/someOtherRandomLocation/AnotherRandomFile';

所述错误确实消失了,尽管这些错误对于该项目来说不是可接受的解决方案。我的其他项目没有同样的问题,有谁知道不需要更改所有导入的解决方案吗?

以防万一有人遇到同样的困境,解决问题的办法是:

  • 转到文件 tsconfig.spec.json
  • 注释掉(为我修复)或更改 baseUrl 属性 使其适合您的项目