我需要为AngularJS应用程序编写单元测试,该应用程序大量使用Google Maps API v3(计算距离,在地图中创建标记等),我知道我应该以某种方式创建或模拟地图画布,以便我可以单元测试使用Google Maps的函数API并在该画布上创建标记,但我不知道如何做到这一点,我无法找到任何关于如何基于Google Maps API进行单元测试(最好使用AngularJS/Jasmine)应用程序的好教程/资源.
任何工作示例 - 即使是最简单的 - 像这样的单元测试将非常感激.
我试图使用AngularJS执行多个http POST请求,我需要创建一个成功完成请求的对象 - 类似这样的事情:
var params = [1, 2, 3],
url,
i,
done = {};
for (i in params) {
url = '/dir/'+ params[i];
$http.post(url, {"some_request": "not important"}).
success(function(response) {
done[params[i]] = 'successful';
});
}
Run Code Online (Sandbox Code Playgroud)
我想得到一个包含所有成功请求的对象,如下所示:
done = {1: 'successful', 2: 'successful', 3: 'successful'};
Run Code Online (Sandbox Code Playgroud)
但显然由于http请求的异步性质,我只能得到
done = {3: 'successful'};
Run Code Online (Sandbox Code Playgroud)
因为当http请求返回响应时,循环已经完成并且是它的最后一个值.
这些请求的顺序并不重要,我不想将它们链接起来(异步执行它们应该更快).如何将该循环索引传递给这些响应?谢谢.
我有一个深度JSON对象的数组,看起来像这样:
var hierarchy = [
{
"title": "category 1",
"children": [
{"title": "subcategory 1",
"children": [
{"id": 1, "title": "name 1"},
{"id": 2, "title": "name 2"},
{"id": 3, "title": "name 3"}
]
},
{"title": "subcategory 2",
"children": [
{"id": 1, "title": "name 4"}
]
}
]
},
{
"title": "category 2",
"children": [etc. - shortened for brevity]
}
];
Run Code Online (Sandbox Code Playgroud)
所以基本上它是一个层次结构 - 有些类别可以包含子类别,其中包含具有一些ID和名称的对象.我还有一个与最深层次结构级别(没有子级的对象)相关的ID数组,我需要以这样的方式过滤这组对象,即只保留包含已定义对象的(子)类别.
例如,如果我有一个包含两个ID的数组:
var IDs = [2, 3];
Run Code Online (Sandbox Code Playgroud)
结果将是:
var hierarchy = [
{
"title": "category 1",
"children": [
{"title": …Run Code Online (Sandbox Code Playgroud)