Angular 7单元测试依赖注入在ngOnInit中不起作用。
创始人
2024-10-17 00:30:08
0

在Angular 7中,如果在ngOnInit方法中进行依赖注入的单元测试时出现问题,可能是因为在测试过程中没有正确配置测试环境。以下是一个解决方法的示例:

首先,确保你的组件被正确导入:

import { MyComponent } from './my.component';

然后,在describe块中配置测试环境:

import { TestBed, async, ComponentFixture } from '@angular/core/testing';
import { MyComponent } from './my.component';

describe('MyComponent', () => {
  let component: MyComponent;
  let fixture: ComponentFixture;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [ MyComponent ]
    })
    .compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(MyComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });
});

在上述代码中,我们使用TestBed来配置测试环境,并使用compileComponents()方法编译组件。然后,我们使用createComponent方法创建组件实例,并进行必要的变更检测。

接下来,我们可以在beforeEach块中设置依赖注入:

import { TestBed, async, ComponentFixture } from '@angular/core/testing';
import { MyComponent } from './my.component';
import { MyService } from './my.service';

describe('MyComponent', () => {
  let component: MyComponent;
  let fixture: ComponentFixture;
  let myService: MyService;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [ MyComponent ],
      providers: [ MyService ] // 添加服务提供商
    })
    .compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(MyComponent);
    component = fixture.componentInstance;
    myService = TestBed.get(MyService); // 获取注入的服务实例
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });

  it('should call ngOnInit and inject MyService', () => {
    spyOn(component, 'ngOnInit').and.callThrough();
    expect(component.ngOnInit).toHaveBeenCalled();
    expect(myService).toBeTruthy();
  });
});

在上述代码中,我们首先在providers数组中添加MyService,以便在组件实例化时注入该服务。然后,我们使用TestBed的get方法获取MyService实例,并将其存储在myService变量中。

接下来,在it块中,我们使用spyOn方法来监视ngOnInit方法,并验证它是否被调用。我们还验证myService是否成功注入。

这样,我们就可以在ngOnInit方法中进行依赖注入的单元测试了。

相关内容

热门资讯

透视解密"wepok... 透视解密"wepoker透视苹果系统"确实真的有辅助工具(哔哩哔哩)1、下载好wepoker透视苹果...
透视解迷"wpk透视... 透视解迷"wpk透视是真的假的"一直有辅助软件(哔哩哔哩)1)wpk透视是真的假的有没有挂:进一步探...
透视普及"wpk有辅... 透视普及"wpk有辅助器吗"切实存在有辅助插件(哔哩哔哩)1.wpk有辅助器吗 选牌创建新账号,点击...
透视解迷"wejok... 透视解迷"wejoker私人辅助软件"原来是有辅助技巧(哔哩哔哩)该软件可以轻松地帮助玩家将wejo...
透视辅助"poker... 透视辅助"pokerworld辅助器"总是是有辅助软件(哔哩哔哩)1、pokerworld辅助器破解...
透视详情"wepok... 透视详情"wepoker怎么设置透视"真是是真的辅助教程(哔哩哔哩)1、首先打开wepoker怎么设...
透视必备"wepok... 透视必备"wepoker破解版内购"一直存在有辅助插件(哔哩哔哩)1、wepoker破解版内购公共底...
透视关于"wepok... 透视关于"wepoker私人局辅助挂"切实是真的辅助神器(哔哩哔哩)一、wepoker私人局辅助挂游...
透视关于"wepok... 透视关于"wepoker透视器免费"总是存在有辅助工具(哔哩哔哩)1、透视关于"wepoker透视器...
透视解谜"wepok... 透视解谜"wepoker挂"总是是有辅助脚本(哔哩哔哩)在进入wepoker挂软件靠谱后,参与本局比...