我正在尝试使用 jasmine 框架为 Google Maps 编写 Javascript 测试。我要做的是启动地图并更改边界(缩小)并测试地图是否正确缩小。
我遇到的问题是 jasmine 似乎没有任何方法来处理事件。Jasmine 具有spyOn()
查找方法(而不是事件)用法的方法。茉莉花中还有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()
子句中, (jasmine)expect()
调用似乎不起作用。
做到这一点的最好方法当然是使用 jasmine 方法直接捕获事件,但我还没有想出一个方法来做到这一点。
这里有人知道如何处理这个问题吗?