2016-04-18 4 views
1

In meinen Einheiten Tests in einigen Fällen nach dem Erstellen einer neuen Instanz von mapboxgl.Map ist die Methode map.setStyle undefined. Die Komponententests laufen Winkel 1.5 + Karma Jasmin. Ich verwende die neueste Version von mapboxgl.Mapboxgl setSyle undefiniert nach dem Erstellen neuer Map-Instanz

Wenn in einer Richtlinie Erstellen von Karten, map.setStyle definiert ist, ex:

// directive 
angular.directive('mapDirective', function() { 
    link: function(scope, elem, attr, ctrl) { 
     ctrl.map = new mapboxgl.Map({ 
      container: elem[0], 
      style: 'mapbox://styles/spmatt/ciksnpcsy004992klvge9h2zb' 
     }); 
     console.log(ctrl.map.setStyle); // defined 
    } 
}); 


// tests 
let element = angular.element('<map-directive></map-directive>'); 
this.$compile(element)(this.$rootScope.$new()); 
this.$rootScope.$digest(); 

expect(this.vm.map.setStyle).toBeDefined(); // passes 

Wenn in Tests erstellen, map.setStyle nicht definiert ist, ex:

let element = angular.element('<div></div>'); 
this.$compile(element)(this.$rootScope.$new()); 
this.$rootScope.$digest(); 

map = new mapboxgl.Map({ 
    container: element[0], 
    style: 'mapbox://styles/spmatt/ciksnpcsy004992klvge9h2zb' 
}); 

expect(map.setSyle).toBeDefined(); // fail 

Die zweite Instanz arbeiten sollte, irgendwelche Ideen, warum es scheitert?

Antwort

0

Was ist Ihre Testumgebung? Einige kopflose Browser haben keinen GL, daher wird MapboxGL nicht einmal unterstützt.

Werfen Sie einen Blick und sehen Sie, was mapboxgl.supported() zurückgibt. Ich frage mich, ob Ihre Karteninstanziierung deswegen fehlschlägt.

Verwandte Themen