mapboxgl.Map
私の単体テストでは、メソッドの新しいインスタンスを作成した後、場合によってmap.setStyle
は未定義です。単体テストは、angular 1.5 + karma jasmine を実行しています。最新バージョンの mapboxgl を使用しています。
ディレクティブ内でマップを作成する場合は、次のようにmap.setStyle
定義されます。
// 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
テストで作成する場合、map.setStyle
定義されていません。例:
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
2 番目のインスタンスは機能しているはずですが、失敗する理由はありますか?