【问题标题】:Angular testing a component with Jasmine in a multi module file project在多模块文件项目中使用 Jasmine 对组件进行 Angular 测试
【发布时间】:2021-03-04 18:10:43
【问题描述】:

我一直在努力让它工作,只依赖于 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';

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

【问题讨论】:

    标签: angular unit-testing testing jasmine karma-jasmine


    【解决方案1】:

    以防万一有人发现自己处于同样的困境中,问题的解决方案是:

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

    【讨论】:

      猜你喜欢
      • 2020-04-10
      • 1970-01-01
      • 2019-01-15
      • 2019-01-21
      • 1970-01-01
      • 2017-06-23
      • 1970-01-01
      • 2019-02-15
      • 2016-04-24
      相关资源
      最近更新 更多