如何在茉莉测试框架中处理谷歌地图事件
How to handle google maps events in jasmine test framework
我正在尝试使用jasmine框架为Google Maps编写Javascript测试。我要做的是初始化地图,改变边界(缩小),并测试地图是否正确缩小。
我遇到的问题是,jasmine似乎没有任何方法来处理事件。Jasmine有一个spyOn()
方法,它查找方法的使用情况(而不是事件)。在jasmine中还有waits()
方法,它等待特定的时间。这些方法都不适合处理事件。有人对茉莉花的事件有经验吗?
我正在使用的代码:
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);
});
});
});
});
主干视图将启动,Google地图将呈现。zoomToBounds
方法工作得很好,但当我想检查结果时,我遇到了一些问题。在google.maps.event.addListener()
子句中,(茉莉花)expect()
调用似乎不起作用。
最好的方法当然是使用jasmine方法直接捕获事件,但我还没有找到这样做的方法。
这里有人知道如何处理这个吗?
最好的方法当然是使用jasmine方法直接捕捉事件
你是否尝试过使用茉莉花间谍来监视对象的原型,该对象绑定了事件?我认为你的事件可能会在间谍设置之前绑定:
下面是一个简单的例子(在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()
相关文章:
- 如何在多承诺链中处理谷歌地图API V3事件
- 如何处理'#'在谷歌地图的url中
- 谷歌地图API v3:处理使用限制限制
- 当没有互联网连接时,谷歌地图Java脚本API处理
- 谷歌地图API:强制地图不处理信息框内的点击
- 当点击处理程序添加到谷歌地图圆圈标记时,无法访问对象数据
- 如何在javascript中处理带有互联网的谷歌地图api
- 在谷歌地图api v3上处理大量标记
- 在点击处理程序中获取标记:AngularJS+谷歌地图
- 使用 setTimeout() 函数对谷歌地图折线进行动画处理
- 在异步加载谷歌地图时处理网络断开连接
- 谷歌地图处理服务器端
- 如何处理多个谷歌地图标记在完全相同的位置
- 事件处理在JavaScript与谷歌地图API
- 谷歌地图——避免在文档上使用多个处理程序
- 谷歌地图api v2 -如何处理200-300个标记
- GIS谷歌地图处理添加/删除的大型#多边形
- 点击处理程序的谷歌地图v3标记被z索引所破坏
- 使用 JavaScript 打开一个新窗口(谷歌地图),删除以前的事件处理程序
- 如何在茉莉测试框架中处理谷歌地图事件