AngularJS:基于 Google Maps API 的单元测试应用程序

2024-01-02

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

任何像这样的单元测试的工作示例(即使是最简单的示例)都将不胜感激。


从您上面的评论来看,您似乎可能需要以下信息(如果您不需要,请忽略): 这是我必须向您提供的大量解释,如果我将其全部输入,那么这些解释将相当于一本小说。因此,我将向您链接很多文章,这些文章比我向您解释每一篇文章的效果要好得多。

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

如果您要在控制器中使用一些外部代码(Google Maps API、Facebook API 等),您需要inject该代码通过将其包装在service http://docs.angularjs.org/guide/dev_guide.services.creating_services and 将其注入到您的控制器中 http://docs.angularjs.org/guide/dev_guide.services.injecting_controllers.

另外,您可能想要创建指令 http://docs.angularjs.org/guide/directive对于实际的地图片段,作为 DOM 操作(例如 Google 地图 API 中的 new Map() 所做的操作)应该在指令中完成。然后你只需测试该指令。有关测试指令的指导,我建议查看Angular 的指令测试在其 Github 存储库中作为示例 https://github.com/angular/angular.js/tree/master/test/ng/directive。基本上你编译指令,并测试操作它的结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJS:基于 Google Maps API 的单元测试应用程序 的相关文章

  • 在 ajax 请求上启用 jQuery contextMenu 项

    我正在尝试更新上下文菜单 http medialize github com jQuery contextMenu docs htmlitem 如果 ajax 请求改变了我的 div 内容 这就是我的意思 我有一个这样的 div div c
  • 如何正确地将节点从引用传递到上下文?

    我正在尝试将节点从引用传递到上下文 但是因为我在第一次渲染后没有重新渲染 所以传递的节 点是null 我考虑了两种变体 但我认为它们不是最好的 To pass ref代替ref current 但在用例中 我将被迫使用类似的东西contex
  • 鼠标移动时画布拖动

    我正在尝试构建一个可以使用鼠标移动拖动的画布 我做了一些我无法理解的错误 因为一开始似乎有效 然后出现了一个增量错误 使画布移动得太快 考虑以下代码 window onload function var canvas document ge
  • 使用 babel env 预设时,展开运算符出现语法错误

    我正在努力 现代化 meern io 入门样板 https github com Hashnode mern starter通过替换巴别塔es2015 and stage 0预设为env 然而 似乎env预设无法识别以下片段client m
  • 解释一下这个令人困惑的 dojo 教程声明语法

    我正在阅读使用的语法道场的声明 http dojotoolkit org documentation tutorials 1 8 declare 用于班级创建 描述很混乱 The declare function is defined in
  • 是否有任何理由使用 axios 而不是 ES6 fetch [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 研究了 axios 和 ES6 fetch 的文档 我发现两者非常相似 并且都受到 ajax 及其简写的强烈影响 axios 的主要优点是浏览器
  • 指定 HTML5 输入类型 = 日期的值输出?

    我想将本机日期选择器添加到我的应用程序中 该应用程序当前使用遗留的本地系统 日期输入支持尚未广泛普及 但如果我可以基于兼容性提供这两种实现 那就太理想了 有没有办法指定 HTML 日期选择器给出的值的输出 歌剧的默认设置是yyyy mm d
  • 仅从功能区打开一个对话框

    我有一个带有登录按钮的功能区 可打开登录对话框 我想将对话框的数量限制为一个 我正在使用函数 displayDialogAsync startAddress options callback https learn microsoft co
  • 基于范围内变量的角度设置形式动作

    我一直在尝试设置一个搜索表单 可以在其中注入表单操作属性 在我的表格中我有
  • 文件缓存:查询字符串与上次修改时间?

    我正在研究缓存网站资源的方法 并注意到大多数与我类似的网站都使用查询字符串来覆盖缓存 例如 css style css v 124942823 后来 我注意到每当我保存 style css 文件时 最后修改的标头都会 更新 使得查询字符串变
  • iPhone 上的锁定方向 UIWebView

    有没有办法锁定 UIWebView 的方向 使用 Obj C JS 还是 Html 我不想有按钮或任何东西 我只想在应用程序打开时将其锁定为纵向 好像这个堆栈溢出帖子 https stackoverflow com questions 43
  • 将默认搜索文本添加到搜索框 html

    我正在努力将 搜索 文本添加到搜索框 我正在努力实现 onfocus 消失文本 And onblur 重新出现文本 到目前为止 我已经实现了这一点 但我必须将其硬编码为 html eg
  • 如何让php页面从html页面接收ajax post

    我有一个非常简单的表单 其中有一个名字输入字段 我捕获了表单数据 并使用标准 jQuery 发布方法通过 ajax 将其传输到 PHP 页面 但是 我根本无法从 PHP 页面获得任何在服务器端捕获数据的响应 我不确定我做错了什么或缺少什么
  • 为什么 TypeScript 混合了模块和原型模式?

    我正在查看此页面上 TypeScript 生成的 JS 代码 http www typescriptlang org Playground http www typescriptlang org Playground 基本上 要创建一个Gr
  • chrome 选项卡/窗口中的 window.open 行为

    我有一小段 javascript 旨在打开两个或更多选项卡 这在 FF 和 IE 中工作正常 但 chrome 会在新窗口而不是选项卡中打开第二个窗口 它不依赖于 url 因为我已经尝试过使用两个相同的 url 第一个在选项卡中打开 第二个
  • D3 强制布局,较大的节点聚集在中心

    我一直在修改将用于标签云的强制布局 每个标签都由一个
  • jQuery UI 对话框 - 关闭后无法打开

    我有一个问题jquery ui dialog box https jqueryui com dialog 问题是 当我关闭对话框然后单击触发它的链接时 除非刷新页面 否则它不会再次弹出 如何在不刷新实际页面的情况下回调对话框 下面是我的代码
  • 如何得知客户端从服务器的下载速度?

    根据客户的下载速度 我想以低质量或高质量显示视频 任何 Javascript 或 C 解决方案都是可以接受的 Thanks 没有任何办法可以确定 您只能测量向客户端发送数据的速度 如果没有来自客户端的任何类型的输入来表明其获取信息的速度 您
  • 拉斐尔路径交叉点不起作用

    我对拉斐尔和 pathIntersection method JSFiddle 示例 http jsfiddle net t6gWt 2 您可以看到有两条线都与曲线相交 但当我使用 pathIntersection method 有一个未解
  • jQuery appendTo(), json 在 IE 6,7,8 中不起作用

    我这两天绞尽脑汁想找到解决办法 我使用 jQuery ajax 从数据库中获取值 以便在另一个框发生更改时更新一个框 php 脚本从数据库中获取值 然后输出 json 它在 FF 中工作正常 但在所有版本的 IE 中 选择框都不会更新 我已

随机推荐

  • ProcessBuilder 和 Runtime.exec() 之间的区别

    我正在尝试从 java 代码执行外部命令 但我注意到两者之间存在差异Runtime getRuntime exec and new ProcessBuilder start 使用时Runtime Process p Runtime getR
  • Linux/C++ 如何调试发布应用程序

    我有 linux c 多线程应用程序 现在它已经在生产服务器上进行了测试并且出现了段错误 问题是我无法在任何测试服务器上重现该错误 并且无法访问生产服务器 我没有转储或任何其他有用的信息 仅行 段错误位于 0000000046bf0fb8
  • JTree,始终以“编辑模式”显示所有节点

    我正在显示自定义对象树 并且我有自定义对象CellTreeEditor and CellTreeRenderer set 现在我真正想要的是始终像 编辑模式 一样显示所有对象 现在我有CellTreeRenderer getTreeCell
  • 姜戈/彗星(推):万恶之中最小的?

    我已阅读了我能找到的所有有关 Django 和 HTTP Push 的问题和答案 然而 没有人提供一个清晰 简洁 从头到尾的解决方案来说明如何实现所谓的 comet 功能的基本 hello world 第一个问题 1 HTTP 的问题在多大
  • 在 Shell 脚本中将 Cron 作业设置为每月的第一个工作日

    我是脚本语言新手 谁能解释一下如何设置第一个工作日的 cron 作业 您可以使用以下内容 monthly 每月第一天早上运行一次 0 0 1 home scripts your script file sh 第三次编辑 这将在该月第一个工作
  • 在 OpenCV 中创建 AVI 文件

    我一直在尝试使用 OpenCV 和 Visual Studio 2008 创建一个应用程序 从网络摄像头捕获图像 对它们应用过滤器 然后将它们写入 AVI 文件 除了创建 AVI 文件之外 一切正常 问题是它在我的计算机上可以运行 但在我同
  • HashSet 如何与 hashCode() 配合使用?

    我试图更深入地了解 java util Collection 和 java util Map 但我对 HashSet 功能有一些疑问 在文档中 它说 此类实现 Set 接口 由哈希表 实际上是 HashMap 实例 支持 好的 所以我可以看
  • 抓取 NSDictionary 中的随机条目

    有没有办法在 NSDictionary 中获取完全随机的密钥 NSString key enumeratorForKeysInDictionary nextObject 我有这段代码以非随机方式迭代字典 我应该将所有键添加到 NSSet 中
  • 如何授予apache写入主目录的权限?

    我的服务器位于 var www html 我在 var www html fileio test io test php 有一个 php 脚本 当我尝试运行这个脚本时 我得到 Warning fopen home djameson test
  • Spring Security 配置自动装配自定义 UserDetailsS​​ervice bean

    我最近回到了我一直在从事的一个 Spring 项目 在启动应用程序时遇到了问题 这个问题可能是重复的 但我一直找不到答案 这是我原来的 SecurityConfig java 的一个片段 Configuration EnableWebSec
  • 如何使用Java找到矩阵的鞍点? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何使用Java找到矩阵的鞍点 该鞍点是行中最大的数字 同时也是列中最大的数字 例如 使用这个矩阵 7 2 1 3 5 8 鞍点是 7 和
  • Access - 根据不同的列值获取不同的行数

    我有一个具有以下格式的访问数据库 ID Period Data 13 1 xxxxx 13 2 xxxxx 25 1 xxxxx 25 2 xxxxx 25 3 xxxxx 52 1 xxxxx 52 3 xxxxx 94 1 xxxxx
  • CUDA 阻塞标志

    创建 CUDA 事件时 您可以选择打开cudaEventBlockingSync旗帜 但是 如果创建带有或不带有标志的事件之间存在差异怎么办 我阅读精美的手册 http developer download nvidia com compu
  • 将显示名称作为值的 Get-ADUser

    我在 CSV 文件中有用户显示名称列表 我试图获取 samAccountName 并将其导出到 CSV 文件 但它不起作用 我知道 get aduser 不接受显示名称作为值 所以我使用了过滤器 但仍然没有请工作帮助 CSV 文件格式 Us
  • python: sqlalchemy - 如何使用新的事件系统确保连接不会过时

    我正在 python 中使用 sqlalchemy 包 在现有表上执行自动加载后 我有一个操作需要一些时间才能执行 当我尝试使用连接时 这会导致以下错误 sqlalchemy exc OperationalError Operational
  • Android:闹钟完成或关闭时打开活动

    用户通过手机库存时钟设置的每个闹钟都可以选择在闹钟解除或完成时打开另一个应用程序 我不确定 Marshmallow 中是否添加了此功能 但我有它并且运行 android M 每个警报的默认设置为 无 但您可以选择邮件 天气 音乐应用程序等
  • MyBatis 中单个映射器方法中的多个语句

    我有一个映射器方法来删除表中的所有记录 但首先我需要删除关联连接表中的所有记录 这是我尝试过的 Delete delete from COC BLOCK FIELD delete from COC BLOCK void deleteBloc
  • jQuery UI 自动完成刷新数据

    我使用 jQuery ui 自动完成功能 var colors document ready function loadColors empf autocomplete colors function loadColors colors n
  • 如何使用 Django Rest Framework 反序列化嵌套对象

    假设我有这样的 Django 模型 class Book models Model title models CharField max length 150 author models CharField max length 150 c
  • AngularJS:基于 Google Maps API 的单元测试应用程序

    我需要为 AngularJS 应用程序编写单元测试 该应用程序大量使用 Google Maps API v3 计算距离 在地图中创建标记等 并且我知道我应该以某种方式创建或模拟地图画布 以便我可以对使用 Google Maps 的功能进行单