angular - 增加 jasmine 函数的覆盖率汇总
问题描述
我在应用程序组件中编写了一些函数。面临增加组件方法的覆盖率摘要的问题。
测试用例运行良好,只是覆盖摘要中没有跟踪几行。
app.component.ts
public initializeA(): void {
this.flagClone.client = {
build: null, //string
name: null, //string
id: null //string
}
}
public initializeB(): FlagResult {
this.isSearch = false;
return {
id: null, //string
description: null, //string
url: null, //string
client:{
build: null, //string
name: null, //string
id: null //string
}
};
}
app.component.spec.ts各自的测试用例
const testFlagResult: FlagResult = {
id: null, //string
description: null, //string
url: null, //string
client:{
build: null, //string
name: null, //string
id: null //string
}
};
it('should initializeA',() => {
const mock = spyOn(component,'initializeA').and.returnValue();
component.initializeA();
fixture.detectChanges();
expect(mock).toHaveBeenCalled();
});
it('should initializeB',() => {
const mock = spyOn(component,'initializeB').and.returnValue(testFlagResult);
component.initializeB();
fixture.detectChanges();
expect(component.isSearch).toBeTruthy();
expect(mock).toHaveBeenCalled();
});
期望以下块包含在覆盖范围摘要中:
public initializeA(): void {
this.flagClone.client = {
public initializeB(): FlagResult {
this.isSearch = false;
需要一些我错过的输入。
解决方案
添加间谍时,您不会检查被监视的代码。因此,通过让
const mock = spyOn(component,'initializeA').and.returnValue();
您避免测试initializeA
并且让 const mock = spyOn(component,'initializeB').and.returnValue(testFlagResult);
您实际上没有测试initializeB
更好的实现是
it('should initializeA',() => {
component.initializeA();
fixture.detectChanges();
expect(component.flagClone.client).toEqual({
build: null,
name: null,
id: null
});
});
it('should initializeB',() => {
const expectedResult = {
id: null, //string
description: null, //string
url: null, //string
client:{
build: null, //string
name: null, //string
id: null //string
}
}
const res = component.initializeB();
fixture.detectChanges();
expect(component.isSearch).toBeTruthy();
expect(res).toEqual(expectedResult);
});
这样,您实际上是在测试您的方法是否按预期工作
推荐阅读
- python - 即使在笔记本电脑上播放良好,Kivy 声音也无法在 Android 设备上播放
- snowflake-cloud-data-platform - 如何在雪花中获取用户角色层次结构?
- apache-spark - NoClassDefFoundError:Solr 和 Spark Livy 中的 org/apache/solr/client/solrj/io/stream/expr/StreamExpressionParameter
- php - [Route: claim_card] [URI: admin/claim_card/{giftcard_id}/{layout_id}/{user_id}/{color_id}] 缺少必需的参数。- 拉拉维尔
- c# - 如何从 SQL Server 表中转换 TinyInt 值?
- javascript - 当我们提到 discord.js v12 时,如何让我的机器人做出响应?
- javascript - 通过 reducer 函数放置嵌套数组
- azure-application-insights - 大数据应用洞察
- docker - docker 容器在运行基准测试后丢失端口转发
- c# - 如果 Else 与布尔值结合不起作用