增加 jasmine 中函数的覆盖率摘要
Increase the coverage summary for function in 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);
});
通过这种方式,您实际上是在测试您的方法是否按预期工作
我在应用程序组件中编写了一些函数。在增加组件方法的覆盖率摘要时遇到问题。
测试用例工作正常,只是覆盖率摘要中没有跟踪几行。
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);
});
通过这种方式,您实际上是在测试您的方法是否按预期工作