【发布时间】:2017-09-24 12:48:04
【问题描述】:
在真实浏览器中运行 Jasmine 时,我注意到 TestBed 夹具组件并未在 DOM 中销毁,并且在测试结束后仍然存在:
这是一个经过测试的组件:
@Component({
selector: 'test-app',
template: `<div>Test</div>`,
})
class Test {}
还有一个测试 (plunk)。
let component;
let fixture;
let element;
beforeAll(() => {
TestBed.resetTestEnvironment();
TestBed.initTestEnvironment(
BrowserDynamicTestingModule,
platformBrowserDynamicTesting()
);
});
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [Test],
})
.compileComponents();
fixture = TestBed.createComponent(Test);
component = fixture.componentInstance;
element = fixture.debugElement.query(By.css('div')).nativeElement;
fixture.detectChanges();
});
afterEach(() => {
fixture.destroy();
});
it('should compile Test', () => {
expect(element).toBeTruthy();
});
为什么Test 组件实例没有从 DOM 中移除,应该如何解决?
为什么要将夹具组件添加到 DOM 中?它们可以像 AngularJS 中的 $rootElement 那样从 DOM 中分离出来吗?
【问题讨论】:
标签: javascript unit-testing angular typescript jasmine