我有一个ngOnInit函数,它在同一个组件中调用另一个函数,我正在使用jasmine测试这个组件。
我想模拟ngOnInit函数中的函数,以防止原始实现执行。
ngOnInit(): void {
this.initializeData();
}在每个函数之前,我尝试了以下实现,但是这样ngOninit将执行两次:
beforeEach(() => {
testHostFixture = TestBed.createComponent(TestHostComponent);
testHostComponent = testHostFixture.componentInstance;
spyOn(testHostComponent, 'initializeData').and.callFake(()=>{console.log("replacement");});
testHostComponent.ngOnInit();
testHostFixture.detectChanges();
});在initializeData第一次执行之前,是否要模拟函数‘ngOnInit’的实现?
谢谢。
发布于 2020-01-14 19:50:49
在创建组件之前,您需要进行监视。所以把间谍移到造物线的上方。
beforeEach(() => {
spyOn(testHostComponent, 'initializeData').and.callFake(()=>
{console.log("replacement");});
testHostFixture = TestBed.createComponent(TestHostComponent);
testHostComponent = testHostFixture.componentInstance;
testHostComponent.ngOnInit();
testHostFixture.detectChanges();
});当组件在ngOnInit()中创建时运行ngOnInit()时,您的TestBed将在这里被调用两次。如果你只想叫一次的话。删除显式调用testHostComponent.ngOnInit();
https://stackoverflow.com/questions/59740775
复制相似问题