我正在为Angular 2+编写服务的单元测试(请参阅下面的代码块)。我如何使用Jasmine框架实现这一目标?
declare var window: any;
@Injectable
export class Somename {
constructor() {
if (window.cordova) {
function1();
} else {
function2();
}
}
private function1() {
}
private function2() {
}
}
答案 0 :(得分:1)
像这样的东西可能是骨架:
describe('ComponentExample', () => {
let component: ComponentExample;
let fixture: ComponentFixture<ComponentExample>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ComponentExample ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ComponentExample);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
// Lunch cordova here
expect(component).toBeTruthy();
// Not lunch cordova here
expect(component).toBeTruthy();
});
});
这应该可以检查构造函数,我不知道如何午餐cordova,因为我没有使用它。但是你需要在打开或不打开窗口后期望组件。
我读了一些关于ngOnInit的事情,我认为没有必要测试构造函数。如果你初始化组件你将测试构造函数,这里的问题是关于open cordova。检查是否覆盖构造函数的一些方法是使用 ng test --code-coverage 。这将生成一个目录 coverage ,其中包含 index.html 文件,该文件将恢复代码的所有行。并说,如果你覆盖某些行或不。
当您在应用程序中进行路由时,ngOnInit最常用于执行代码。如果您在收取组件或服务时需要执行某些操作,则非常有用。但这与此测试没有区别。