我一直使用Jasmine进行单元测试,但最近我开始使用Istanbul来给我代码覆盖报告.我的意思是我得到他们试图告诉我的要点,但我不知道每个百分比代表什么(Stmts,Branches,Funcs,Lines).到目前为止谷歌搜索我一直无法找到可靠的解释/资源.
问题:就像我说的那样,我得到了它的要点,但有人可以发布正确的解释或链接到正确的解释吗?
第三个问题:有没有办法确定代码的哪些特定部分未被涵盖?到目前为止,我还没有真正地了解这份报告,我基本上在猜测.
-------------------|-----------|-----------|-----------|-----------|
File | % Stmts |% Branches | % Funcs | % Lines |
-------------------|-----------|-----------|-----------|-----------|
controllers/ | 88.1 | 77.78 | 78.57 | 88.1 |
dashboard.js | 88.1 | 77.78 | 78.57 | 88.1 |
-------------------|-----------|-----------|-----------|-----------|
All files | 88.1 | 77.78 | 78.57 | 88.1 |
-------------------|-----------|-----------|-----------|-----------|
Run Code Online (Sandbox Code Playgroud) 我想弄清楚是否有任何方法可以将索引参数传递给promise的回调函数.例如.
serviceCall.$promise.then(function(object){
$scope.object = object;
});
Run Code Online (Sandbox Code Playgroud)
现在我想传入一个数组索引参数as
serviceCall.$promise.then(function(object,i){
$scope.object[i] = something;
});
Run Code Online (Sandbox Code Playgroud)
可以这样做吗?请告诉我.
这是下面的代码
StudyService.studies.get({id:
$routeParams.studyIdentifier}).$promise.then(function(study) {
$scope.study = study;
for(var i=0;i<study.cases.length;i++){
StudyService.executionsteps.get({id:
$routeParams.studyIdentifier,caseId:study.cases[i].id})
.$promise.then(function(executionSteps,i){
$scope.study.cases[i].executionSteps = executionSteps;
});
}
});
Run Code Online (Sandbox Code Playgroud) 我有一个看起来大致如下的Mongodb架构:
[
{
"name" : "name1",
"instances" : [
{
"value" : 1,
"date" : ISODate("2015-03-04T00:00:00.000Z")
},
{
"value" : 2,
"date" : ISODate("2015-04-01T00:00:00.000Z")
},
{
"value" : 2.5,
"date" : ISODate("2015-03-05T00:00:00.000Z")
},
...
]
},
{
"name" : "name2",
"instances" : [
...
]
}
]
Run Code Online (Sandbox Code Playgroud)
其中每个元素的实例数量可能非常大.
我有时想只得到一个数据样本,也就是说,获取每个第三个实例,或每第10个实例......你得到了图片.
我可以通过获取所有实例并在我的服务器代码中过滤它们来实现这一目标,但我想知道是否有办法通过使用一些聚合查询来实现.
有任何想法吗?
更新
假设数据结构是扁平的,如下面的@SylvainLeroux所示,那就是:
[
{"name": "name1", "value": 1, "date": ISODate("2015-03-04T00:00:00.000Z")},
{"name": "name2", "value": 5, "date": ISODate("2015-04-04T00:00:00.000Z")},
{"name": "name1", "value": 2, "date": ISODate("2015-04-01T00:00:00.000Z")},
{"name": "name1", "value": 2.5, "date": ISODate("2015-03-05T00:00:00.000Z")},
...
] …Run Code Online (Sandbox Code Playgroud) 尝试在我的NodeJS服务器上创建文件下载功能时,我遇到了一些意外的行为.我有一个REST(快速)API,它需要一些导出数据功能,它在服务器上创建一个CSV文件并用于res.download('path/to/file')触发下载.响应头包括
Content-Disposition:attachment; filename="indicators.csv"
Content-Length:30125
Content-Type:text/csv; charset=UTF-8
Run Code Online (Sandbox Code Playgroud)
所以一切似乎都井然有序.
问题是,我从服务器得到的响应是纯文本.响应包含CSV文件包含的所有数据,但不会像我预期的那样触发浏览器的文件下载对话框.我在Chrome和FF上都试过了.两者都存在问题.
有任何想法吗?
更新
我设法通过创建一个虚拟表单,并使用其提交操作来进行我的AJAX调用来使其工作.但这是一个丑陋的黑客,我仍然在寻找一个更优雅的解决方案.
在玩Angular 2时,我遇到了一个问题:显然我不能在同一个DOM元素上放置两个结构指令(ngFor,ngIf).
在Angular 1中,这曾经起作用.对于例如:
<div ng-repeat="item in items" ng-if="$even">{{item}}</div>
Run Code Online (Sandbox Code Playgroud)
当我尝试与Angular 2类似的东西时:
@Component({
selector: 'my-app',
providers: [],
template: `
<div>
<div *ngFor="#item of items; #e = even" *ngIf="e">{{item}}</div>
</div>
`,
directives: []
})
export class App {
constructor() {
this.items = ["a","b","c"]
}
}
Run Code Online (Sandbox Code Playgroud)
什么都没发生.甚至没有错误.
如果我将ngIf指令放在子元素上,它可以工作:
<div *ngFor="#item of items; #e = even"><div *ngIf="e">{{item}}</div></div>
Run Code Online (Sandbox Code Playgroud)
但问题是我不想为此添加子元素.例如,如果它<tr>是表中的标记,那么添加div内部将使DOM变得怪异.
我知道Angular 2仍处于测试阶段,但我想知道它是否是一个bug,一个功能,或者可能是一种无证的方式来实现我想要的.
我在尝试在我的Neo4j数据库中实现搜索时遇到了一个有趣的问题.我想在任何节点的属性中搜索某个短语(也允许部分匹配).这必须是通用的,适用于所有节点类型和标签,因此我无法预先定义要搜索的属性列表.
为了理解这个问题,请考虑Neo4j浏览器(:play movie graph)中捆绑的着名Movie DB教程:假设我想搜索标签Movie中具有以'The'开头的属性的节点.我的第一个想法是:
match (m:Movie)
where (any(prop in keys(m) where m[prop] starts with "The"))
return m
Run Code Online (Sandbox Code Playgroud)
这当然会抛出错误,因为其中一个属性是数字而不是字符串.使用toString对我没用,因为在我的DB中,一些属性是布尔值,而布尔值没有响应toString.
我的下一次尝试是使用正则表达式,这对于搜索也更好,因为我可以使它不区分大小写并且通常更健壮.所以我这样做了:
match (m:Movie)
where (any(prop in keys(m) where m[prop] =~ "(?i)The .*"))
return m
Run Code Online (Sandbox Code Playgroud)
它奏效了!我得到了他们的标题或标语以"The"开头的所有电影.有很多的欣喜.
但现在是棘手的部分.我的搜索还需要提供对搜索的否定,即所有没有任何以"The"开头的属性的电影.我显然试过了:
match (m:Movie)
where NOT (any(prop in keys(m) where m[prop] =~ "(?i)The .*"))
return m
Run Code Online (Sandbox Code Playgroud)
但是这个查询返回了一个空响应.没有错误,只是没有结果.
在尝试隔离问题时,我意识到查询在以下情况下确实有效:
where NOT(any(prop in keys(m) where m[prop] = "Hoffa"))).where NOT(any(prop in …既然@Page装饰器已被弃用,应用程序如何区分应该用作页面一部分的组件和代表您可以导航到的页面的组件?
我看到的唯一区别是页面组件没有selector在@Component装饰器中定义属性。
所以我想为我的记录器添加两个级别。但它没有记录,我不知道为什么......这是我的设置。有任何想法吗?
// setup
var logLevels = {
levels: {
trace: 0,
debug: 1,
info: 2,
warn: 3,
error: 4,
critical: 5
}
};
var logger = new (winston.Logger)({
levels: logLevels.levels,
transports: [
new winston.transports.Console()
]
});
// test
console.info('----------------------');
logger.trace('trace');
logger.debug('debug');
logger.info('info');
logger.warn('warn');
logger.error('error');
logger.critical('critical');
console.info('----------------------');
Run Code Online (Sandbox Code Playgroud)
输出:
----------------------
debug: debug
trace: trace
info: info
----------------------
Run Code Online (Sandbox Code Playgroud) 我将grails版本从2.4.5升级到2.5.0.运行我的项目时出现的问题是 -
初始化应用程序时出错:创建名为"com.athena.mis.application.model.ListSupplierActionServiceModelValidator"的bean时出错:注入自动连接的依赖项失败; 嵌套异常是org.springframework.beans.factory.BeanCreationException:无法自动装配方法:public void org.codehaus.groovy.grails.orm.hibernate.validation.HibernateDomainClassValidator.setProxyHandler(org.codehaus.groovy.grails.support.proxy. ProxyHandler); 嵌套异常是java.lang.NoSuchMethodError:org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.access $ 100(Lorg/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor;)Lorg/springframework/beans/factory/config/ConfigurableListableBeanFactory; org.springframework.beans.factory.BeanCreationException:创建名为'com.athena.mis.application.model的bean时出错.ListSupplierActionServiceModel Validator':注入自动连接的依赖项失败; 嵌套异常是org.springframework.beans.factory.BeanCreationException:无法自动装配方法:public void org.codehaus.groovy.grails.orm.hibernate.validation.HibernateDomainClassValidator.setProxyHandler(org.codehaus.groovy.grails.support.proxy. ProxyHandler); 嵌套异常是java.lang.NoSuchMethodError:org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.access $ 100(Lorg/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor;)Lorg/springframework/beans/factory/config/ConfigurableListableBeanFactory;
ListSupplierActionServiceModel 在我的项目中是一个groovy类,它的缓存使用是只读的.
我有一个线程对象数组,每个线程对象都有属性
unit:number
task:number
subtask:number
Run Code Online (Sandbox Code Playgroud)
我想创建一个管道来过滤这些线程,到目前为止我有一个像下面这样的工作管道.我对它还不是很满意,想问你们是否有更优雅的解决方案?
HTML:
<div class="thread-item" *ngFor="#thread of threadlist | threadPipe:unitPipe:taskPipe:subtaskPipe"></div>
Run Code Online (Sandbox Code Playgroud)
Pipe.ts
export class ThreadPipe implements PipeTransform{
threadlistCopy:Thread[]=[];
transform(array:Thread[], [unit,task,subtask]):any{
//See all Threads
if(unit == 0 && task == 0 && subtask == 0){
return array
}
//See selected Units only
if(unit != 0 && task == 0 && subtask == 0){
this.threadlistCopy=[];
for (var i = 0; i<array.length;i++){
if(array[i].unit == unit){
this.threadlistCopy.push(array[i])
}
}
return this.threadlistCopy
}
//See selected Units and Tasks
if (unit != 0 && …Run Code Online (Sandbox Code Playgroud) 我以前从未使用过正则表达式而且我正在测试一些例子.我不明白的是为什么正则表达式^([a-z] | a)$与字符串'a'不匹配.
我的理解[a-z]是相当于(a | b | c | ... | y | z),因此
[a-z] | a 必须等同于(a | b | c | ... | y | z) | a,这是一样的说(a | b | c | ... | y | z)或[a-z].
因此,字符串str匹配^([a-z] | a)$iff匹配^[a-z]$.
这就是为什么我不明白为什么正则表达式与字符串'a'或'e'不匹配的例子.
PS:我在这个页面上测试了这个.