如何测试使用Jasmine加载谷歌地图的脚本

时间:2012-06-19 15:02:22

标签: javascript unit-testing requirejs jasmine

我在为加载谷歌地图的页面编写测试时遇到了困难。我总是收到错误

  

“无法读取未定义的属性'offsetWidth'”

这意味着当地图脚本加载我用来保存地图的div时,可能已经被删除了(我在div的style属性中设置width和height是100%确定它有一个宽度和身高)。

我正在以一种非常复杂的方式加载我的gmaps脚本,涉及requirejs,但我认为问题与此无关(即使我在运行specRunner时遇到requirejs的错误,但一切正常活)。

我应该如何测试?

1 个答案:

答案 0 :(得分:0)

我使用waitFor()并且它有效。

describe( "Test suite for the 'Event location' Box", function() {
    it( "Should show the map when the appropriate checkbok is clicked and should hide it when clicked again", function() {
        // Wait for the loading of the gmaps. This is simply when the <div> we use as a container has some html
        waitsFor(function() {
            return $('#ai1ec_map_canvas').html() !== '';
        }, "gmaps never loaded", 15000 );
        runs( function() {
            $( "#ai1ec_google_map" ).click();
            expect( $( '#ai1ec_map_canvas' ) ).toBeVisible();
            $( "#ai1ec_google_map" ).click();
            expect( $( '#ai1ec_map_canvas' ) ).not.toBeVisible();
        } );
    } );
} );