【问题标题】:subscribe service method not covering in unit test case jasmine单元测试用例 jasmine 中未涵盖的订阅服务方法
【发布时间】:2019-03-05 09:13:29
【问题描述】:
我正在尝试为订阅方法编写测试用例。
code to check
当我用
进行测试时
ng test --code-coverage true
测试用例通过,但在代码覆盖率报告中未覆盖订阅方法
npm run sonar-scanner
有人可以帮忙吗?
【问题讨论】:
标签:
unit-testing
jasmine
angular6
karma-jasmine
【解决方案1】:
创建一个模拟服务并将其作为提供者注入component.spec.ts:
import { of } from 'rxjs';
export class MockService{
validate(){
return of()
}
queryUser(){
return of({username: 'myUser'})
}
}
然后注入为
providers : [
{provide: YourActualService , useClass: MockService}
]
然后将其测试为:
it('should initilize user name',()=> {
component.token = "123";
fixture.detectChanges();
expect(component.uname).toBe('myUser')
})
useClass 将用我们的MockService 替换您的service 组件,其中我们使用of() 返回一个可观察对象