gpt4 book ai didi

javascript - 如何在 Jasmine 测试框架中处理谷歌地图事件

转载 作者:数据小太阳 更新时间:2023-10-29 05:36:31 27 4
gpt4 key购买 nike

我正在尝试使用 jasmine 框架为 Google map 编写 Javascript 测试。我想要做的是启动 map 并更改边界(缩小)并测试 map 是否已正确缩小。

我遇到的问题是jasmine好像没有办法处理事件。 Jasmine 有一个 spyOn() 方法,可以查找方法(不是事件)的用法。 jasmine 中还有 waits() 方法可以等待特定的时间。这些方法都不适用于处理事件。有人对 Jasmine 的事件有任何经验吗?

我正在使用的代码:

describe('Map view', function () {
beforeEach(function () {
$('body').append("<div data-role='page' id='page-map'><div id='map_canvas'></div></div>");

this.view = new MapView({el: $('#map_canvas')});
});

afterEach(function () {
$('body div#page-map').remove();
});

describe('zoom to a new bound in the map', function () {
it('should set map bounds correctly', function () {
this.view.zoomToBounds(this.fixtures.Locations.valid.bounds);

google.maps.event.addListener(this.view.map, 'bounds_changed', function() {
// expect() doesn't work in this context.. (ex: expect(5).toEqual(1) will pass)
expect(this.getBounds().getSouthWest().lat()).toBeGreaterThan(self.fixtures.Locations.valid.bounds.minLat);
expect(this.getBounds().getSouthWest().lng()).toBeGreaterThan(self.fixtures.Locations.valid.bounds.minLng);
expect(this.getBounds().getNorthEast().lat()).toBeLessThan(self.fixtures.Locations.valid.bounds.maxLat);
expect(this.getBounds().getNorthEast().lng()).toBeLessThan(self.fixtures.Locations.valid.bounds.maxLng);
});
});
});
});

Backbone View 将启动,Google map 将呈现。 zoomToBounds 方法工作正常,但当我想检查结果时遇到了一些问题。在 google.maps.event.addListener() 子句中,(jasmine) expect() 调用似乎不起作用。

最好的方法当然是使用 jasmine 方法直接捕获事件,但我还没有想出办法来做到这一点。

这里有人知道如何处理这个问题吗?

最佳答案

The best way to do this would of course be to use jasmine methods for catching the event directly

您是否尝试过使用 jasmine spy 来监视绑定(bind)了事件的对象的原型(prototype)?我认为您的事件可能会在设置 spy 之前绑定(bind):

这是一个简单的例子(在 coffeescript 中)

  it 'calls render when a model is added to the collection', ->
spyOn(MyView.prototype, 'render')
view = new MyView({
collection : new Backbone.Collection([])
})
view.collection.add({})
expect(view.render).toHaveBeenCalled()

关于javascript - 如何在 Jasmine 测试框架中处理谷歌地图事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13990524/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com