Angular中的fixture.componentInstance和fixture.debugElement.componentInstance有什么区别?
What's the difference between fixture.componentInstance and fixture.debugElement.componentInstance in Angular?
使用 Angular 执行单元测试时,通常使用 ComponentFixture
来获取组件的引用。 Angular CLI 自动生成的单元测试为您提供如下内容:
const fixture = TestBed.createComponent(TestComponent);
const component = fixture.debugElement.componentInstance;
不过,我也可以像这样直接在 fixture
上使用 componentInstance
属性:
const fixture = TestBed.createComponent(TestComponent);
const component = fixture.componentInstance; // note that I don't reference `debugElement` here
两者有什么区别?我什么时候应该用一个?
这会给你更清晰的画面:https://angular.io/guide/testing#debugelement
因此,如果您 运行 在没有 DOM 或 DOM 模拟的非浏览器平台上进行测试,那么简短的回答是支持完整的 HTMLElement API,那么您必须使用 fixture.debugElement.componentInstance
,否则您的测试将失败。否则,没关系,如果您使用浏览器,则可以使用其中任何一个。
另外: fixture.debugElement.componentInstance
给出类型 any
的 componentInstance
而 fixture.componentInstance
给你 componentInstance
类型 T
.
使用 Angular 执行单元测试时,通常使用 ComponentFixture
来获取组件的引用。 Angular CLI 自动生成的单元测试为您提供如下内容:
const fixture = TestBed.createComponent(TestComponent);
const component = fixture.debugElement.componentInstance;
不过,我也可以像这样直接在 fixture
上使用 componentInstance
属性:
const fixture = TestBed.createComponent(TestComponent);
const component = fixture.componentInstance; // note that I don't reference `debugElement` here
两者有什么区别?我什么时候应该用一个?
这会给你更清晰的画面:https://angular.io/guide/testing#debugelement
因此,如果您 运行 在没有 DOM 或 DOM 模拟的非浏览器平台上进行测试,那么简短的回答是支持完整的 HTMLElement API,那么您必须使用 fixture.debugElement.componentInstance
,否则您的测试将失败。否则,没关系,如果您使用浏览器,则可以使用其中任何一个。
另外: fixture.debugElement.componentInstance
给出类型 any
的 componentInstance
而 fixture.componentInstance
给你 componentInstance
类型 T
.