首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ngOnInit中创建角分量时,如何在TestBed中重写TestBed中的函数?

在ngOnInit中创建角分量时,如何在TestBed中重写TestBed中的函数?
EN

Stack Overflow用户
提问于 2020-01-14 19:47:06
回答 1查看 1.9K关注 0票数 1

我有一个ngOnInit函数,它在同一个组件中调用另一个函数,我正在使用jasmine测试这个组件。

我想模拟ngOnInit函数中的函数,以防止原始实现执行。

代码语言:javascript
复制
  ngOnInit(): void {
    this.initializeData();
  }

在每个函数之前,我尝试了以下实现,但是这样ngOninit将执行两次:

代码语言:javascript
复制
  beforeEach(() => {
    testHostFixture = TestBed.createComponent(TestHostComponent);
    testHostComponent = testHostFixture.componentInstance;
    spyOn(testHostComponent, 'initializeData').and.callFake(()=>{console.log("replacement");});
    testHostComponent.ngOnInit();
    testHostFixture.detectChanges();
  });

在initializeData第一次执行之前,是否要模拟函数‘ngOnInit’的实现?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-14 19:50:49

在创建组件之前,您需要进行监视。所以把间谍移到造物线的上方。

代码语言:javascript
复制
  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();

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59740775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档