Karma和Jasmine在角度测试中出现错误

问题描述

这些是我使用Angular版本6的JSON文件的devDependencies

"devDependencies": {
    "@angular-devkit/build-angular": "~0.8.0","@angular/cli": "~6.2.1","@angular/compiler-cli": "^6.1.0","@angular/language-service": "^6.1.0","@types/jasmine": "~2.8.8","@types/jasminewd2": "~2.0.3","@types/node": "~8.9.4","codelyzer": "~4.3.0","jasmine-core": "~2.99.1","jasmine-spec-reporter": "~4.2.1","karma": "~3.0.0","karma-chrome-launcher": "~2.2.0","karma-coverage-istanbul-reporter": "~2.0.1","karma-jasmine": "~1.1.2","karma-jasmine-html-reporter": "^0.2.2","protractor": "~5.4.0","ts-node": "~7.0.0","tslint": "~5.11.0","typescript": "~2.9.2"}

和我的 menu.component.spec.ts

import { async,ComponentFixture,Testbed } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';

import { browserAnimationsModule } from '@angular/platform-browser/animations';
import { FlexLayoutModule } from '@angular/flex-layout';
import { MatGridListModule } from '@angular/material/grid-list';
import { MatProgressspinnerModule } from '@angular/material/progress-spinner';

import { Observable,of } from 'rxjs';

import { dish } from '../shared/dish';
import { dishService } from '../services/dish.service';
import { disHES } from '../shared/dishes';
import { baseURL } from '../shared/baseurl';
import { MenuComponent } from './menu.component';
import { By } from '@angular/platform-browser';
import { DebugElement } from '@angular/core';


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

  beforeEach(async(() => {

    const dishServiceStub = {
      getdishes: function(): Observable<dish[]> {
        return of(disHES);
      }
    };

    Testbed.configureTestingModule({
      imports: [ browserAnimationsModule,FlexLayoutModule,MatGridListModule,MatProgressspinnerModule,RouterTestingModule.withRoutes([{ path: 'menu',component: MenuComponent }])
        
      ],declarations: [ MenuComponent ],providers: [
        { provide: dishService,useValue: dishServiceStub },{ provide: 'baseURL',useValue: baseURL }

      ]
    })
    .compileComponents();

    const dishservice = Testbed.get(dishService);

  }));

  beforeEach(() => {
    fixture = Testbed.createComponent(MenuComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create',() => {
    expect(component).toBeTruthy();
  });
  // it('dishes items should be 4',() => {
  //   expect(component.dishes.length).toBe(4);
  // }
  // );
});

当我运行“ ng test”命令时,在“业力调试”选项卡中收到此错误

MenuComponent应该创建 错误:StaticInjectorError(DynamicTestModule)[BaseURL]: StaticInjectorError(平台:核心)[BaseURL]: NullInjectorError:没有BaseURL提供程序! 错误:StaticInjectorError(DynamicTestModule)[BaseURL]: StaticInjectorError(平台:核心)[BaseURL]: NullInjectorError:没有BaseURL提供程序! 在NullInjector.get(./node_modules/@angular/core/fesm5/core.js?:1360:19) 在resolvetoken(./node_modules/@angular/core/fesm5/core.js?:1598:24) 在tryResolvetoken(./node_modules/@angular/core/fesm5/core.js?:1542:16) 在StaticInjector.get(./node_modules/@angular/core/fesm5/core.js?:1439:20) 在resolvetoken(./node_modules/@angular/core/fesm5/core.js?:1598:24) 在tryResolvetoken(./node_modules/@angular/core/fesm5/core.js?:1542:16) 在StaticInjector.get(./node_modules/@angular/core/fesm5/core.js?:1439:20) 在resolveNgModuleDep(./node_modules/@angular/core/fesm5/core.js?:8667:29) 在NgModuleRef_.get(./node_modules/@angular/core/fesm5/core.js?:9355:16) 在resolveDep(./node_modules/@angular/core/fesm5/core.js?:9720:45)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)