创建新的地图实例后,Mapboxgl setSyle未定义

时间:2016-04-18 20:43:51

标签: angularjs unit-testing karma-jasmine mapbox-gl-js

在我的单元测试中,在某些情况下,在创建mapboxgl.Map的新实例后,方法map.setStyle未定义。单元测试运行角1.5 +业力茉莉。我使用的是最新版本的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

第二个实例应该工作,任何想法失败的原因?

1 个答案:

答案 0 :(得分:0)

您的测试环境是什么?有些无头浏览器没有GL,所以甚至不支持MapboxGL。

看看mapboxgl.supported()返回的内容。我想知道你的地图实例化是否因此而失败。