5

我需要为大量使用 Google Maps API v3(计算距离、在地图中创建标记等)的 AngularJS 应用程序编写单元测试,并且我知道我应该以某种方式创建或模拟地图画布,以便我可以对使用 Google Maps 的函数进行单元测试API 并在该画布上创建标记,但我不知道该怎么做,而且我找不到任何关于如何基于 Google Maps API 对应用程序进行单元测试(最好使用 AngularJS/Jasmine)的好的教程/资源。

任何工作示例 - 即使是最简单的单元测试 - 将不胜感激。

4

1 回答 1

7

从您上面的评论看来,您可能需要以下信息(如果您不这样做,请忽略):这是我必须给您的很多解释,如果我全部输入,这将相当于一本小说。因此,我只想给你链接很多文章,这些文章会比我向你解释每一篇文章做得更好。

Angular 是关于依赖注入的。如果您正在进行任何单元测试,依赖注入至关重要。为了完整起见,我假设您不知道依赖注入是什么并提供一个快速解释(如果您已经知道,请原谅我):依赖注入正在设计您的代码,以便可以通过“注入”任何外部依赖项争论。依赖项可以是它所在代码块之外的任何代码。这就是为什么在 Angular 中,您必须在控制器中包含 $scope,或者可能是 $http 或 $resource...,因为它们被注入到您的控制器中。在单元测试中,这允许您模拟这些对象并将它们传入,因此您可以以受控方式查看测试结果。

如果您要在控制器中使用一些外部代码(Google Maps API、Facebook API 等),您希望通过将其包装在服务中并将其注入控制器来注入该代码。

此外,您可能希望为实际的地图片段创建一个指令,因为 DOM 操作(例如 Google Maps API 中的 new Map() 所做的)应该在指令中完成。然后你只需测试指令。有关测试指令的指导,我建议在他们的 Github 存储库中查看 Angular 的指令测试作为示例。基本上你 $compile 指令,并测试操作它的结果。

于 2012-12-03T14:22:40.647 回答