При запуске Jasmine в реальном браузере я заметил, что компонент TestBed
fixture не разрушен в 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 добавляются в DOM? Могут ли они быть отделены от DOM, как $rootElement
в AngularJS?