2017-06-01 5 views
1

Ich benutze angular2 und openlayers3, um eine Karte auf unserer Seite anzuzeigen. Nach Singleclick-Funktion wird verwendet, um ein Popup zu zeigen, wenn Markierung auf der Karte angeklickt wird -So lösen Sie openLayers 3 'singleClick' aus dem Karmatest aus

 this.map.on('singleclick', (e) => { 
      this.showWellDetails(e.pixel); 
     }); 

Die perfekt funktioniert gut, aber ich habe keine Möglichkeit, von meinem Karma Test auslösen soll. Daher wird dieser Codeblock nicht abgedeckt.

bearbeiten - Added-Code für Testfall auch hier -

@Component({ 
    selector: 'test-component-wrapper', 
    template: '<map [markers]="markers" [isDocked]="isDocked" ></map>', 
}) 
class TestComponentWrapper { 
    public isDocked = true; 
    public markers = [ 
     { 
      "latitude": 101.106074, 
      "longitude": 1.307283, 
      "name": "211/27-A17", 
     }, 
     { 
      "latitude": 61.034344, 
      "longitude": 1.703716, 
      "name": "211/29-A17", 
     }, 
    ]; 
} 
describe('MapComponent events',() => { 
    let component: MapComponent; 
    let fixture: ComponentFixture<TestComponentWrapper>; 

    beforeEach(async(() => { 
     TestBed.configureTestingModule({ 
      declarations: [ 
       TestComponentWrapper, 
       MapComponent, 
      ], 
      schemas: [CUSTOM_ELEMENTS_SCHEMA] 
     }) 
      .compileComponents(); 

     fixture = TestBed.createComponent(TestComponentWrapper); 
     component = fixture.debugElement.children[0].componentInstance; 
     fixture.detectChanges(); 
    })); 

    it('should create',() => { 
     expect(component).toBeTruthy(); 
    }); 

    it('should test showDetails functionality',() => { 
     component.isDocked = false; 
     component.initMap(); 
     expect(fixture.debugElement.query(By.css('#mapId'))).not.toBe(null); 
     let pixel = [ 
      233.10227584838867, 
      191.25, 
     ]; 

     // I want to trigger 'singleClick' on map from here... 
     // component.map.singleClick(); 
     // Since this is not working, I have to make showWellDetails function public and call it directly. 
     //at least it adds coverage for this function, but the original block of code mentioned above remains uncovered. 


     component.showWellDetails(pixel); 
     expect(fixture.debugElement.query(By.css('#featureDetails'))).toBe(null); 
     expect(component.locationCoordinate).toBeUndefined(); 
    }); 
    //other tests 
}); 

Jede Hilfe ist willkommen! TIA.

+0

Bitte, könnten Sie Ihre Unit-Tests Code posten? – SrAxi

+1

@SrAxi - Testcode im Beitrag hinzugefügt Edit –

+0

Hey - kann mir bitte jemand dabei helfen? –

Antwort

0

Wie ich erreicht schließlich könnte es anderen helfen, die für diese Informationen suchen -

public singleClickCallback = (e) => { 
     this.showWellDetails(e.pixel); 
} 

this.map.on('singleclick', this.singleClickCallback); 
Verwandte Themen