mercredi 17 mai 2017

How to simulate a Response data in MockService when i use karma testing typescript

I would like to use MOCKservice to simulate the data returned by the service instead of the original service。But i don't know how to do it.I have tried this but failed. Expected undefined to equal 204.

//code in strategy.ts
  onClickDelete(strategy:Strategy):void{
    if(window.confirm("Are you sure?")){
      this.strategyService.deleteStrategyById(strategy.id).subscribe((res:Response)=>{
          this.status = res.status;
          alert(this.status);
          alert("delete!");
          //location.reload();
        },
        error=>{alert("delete failed");console.log(error);},
        ()=>console.log(strategy.strategyname +" This object has been completely deleted"));
    //}
  }
//startegy.spec.ts
class MockStrategyTablesService extends StrategyTablesService{
  //noinspection JSAnnotator
  deleteStrategyById(id: number){
    var mockData={
      _body:null,
      status:204,
      statusText:"OK",
      type:2,
      url:"http://localhsot:8080/api/strategys/10"
    }
    return Observable.of({
      Response:() => mockData
    });
  };

}
describe('strategyTable.component',()=>{

  let compp;
  let strategy= new Strategy();

  beforeEach(()=>{
    TestBed.configureTestingModule({
      imports:[HttpModule,RouterTestingModule],
      providers:[
        StrategyTables,
        {provide:StrategyTablesService,useClass:MockStrategyTablesService},
        //{provide:Router,useClass:RouterStub},
        Location,
      ]
    });

  });

   beforeEach(inject([StrategyTables],s => {
   compp = s;
   }));

  it('test delete',async(()=>{
    compp.onClickDelete(strategy);
    expect(compp.status).toEqual(204);
  }));

});

Aucun commentaire:

Enregistrer un commentaire