你的一些测试做了一个完整的页面重新加载

some of your test did a full page reload

当我做 angular 单元测试时,发现了这个错误

提醒:'Add Success!' Chrome 58.0.3029 (Windows 10 0.0.0) 错误 您的一些测试重新加载了整页! Chrome 58.0.3029 (Windows 10 0.0.0):执行 0 次,共 1 次错误(0.503 秒/0 秒)

// strategyAdd.component.ts
export class StrategyAdd{

 strategy = new Strategy();
  status:string;
  iscookies = ['','Yes','No'];
  isuseragents = ['','Yes','No'];
  constructor( private strategyService: StrategyTablesService,
         private router:Router,
           private location: Location
  ) { }


  onClickCreate(strategy:Strategy):void {
    strategy.starttime = this.getDate();
   this.strategyService.createStrategy(strategy).subscribe((data) => {
    this.status = data.json().status;
    if(this.status=="succeed"){
     alert("Add Success!");
     location.reload();
    }else{
     alert("Add failed!");
    }
   },
   error => console.log(error));
  }
}

//// strategyAdd.component.spec.ts
class MockStrategyTablesService extends StrategyTablesService{
  //noinspection JSAnnotator
  createStrategy(strategy:Strategy){
    var mockData={
      "strategyid" : "12",
      "status" : "succeed"
    }
    return Observable.of({
      json:() => mockData
    });
  }
}
describe('override provide Service',()=>{
  let comp;
  let strategy = new Strategy();
  beforeEach(()=>{
    TestBed.configureTestingModule({
      imports:[HttpModule,RouterTestingModule],
      providers:[
        StrategyAdd,
        {provide:StrategyTablesService,useClass:MockStrategyTablesService},
        //{provide:Router,useClass:RouterStub},
        Location,
      ]
    });

  });

  beforeEach(inject([StrategyAdd],s => {
    comp = s;
  }));

  it('test onClickCreate',async(()=>{
    comp.onClickCreate(strategy);
    expect(comp.status).toEqual("success");
  }));
});

您执行 location.reload() 并使用真实位置 - 因此它会重新加载页面。尝试从 providers 数组中删除 Location,因为 RouterTestingModule 已经提供了存根 Location。

这已在 Karma 版本 6

中修复

https://github.com/karma-runner/karma/issues/3560

https://github.com/karma-runner/karma/pull/3565