Чтобы запустить тесты, когда у вас есть компонент, который должен искать вещи вне его, вам нужно создать тестовый комплект, который использует ваш компонент и имеет все необходимые элементы. В вашем случае вам понадобится тестовый компонент, содержащий узел DOM с примененным классом button-visible
.
Вы можете создать тестовый компонент прямо в спецификации теста для использования:
@Component({
template: `
<button class="button-visible">Test Button</button>
<app-component></app-component>
`,
})
class TestHostComponent {
}
Затем вам нужно будет изменить настройки теста, чтобы включить и использовать этот новый компонент:
describe('AppComponent', () => {
let fixture: ComponentFixture<TestHostComponent>;
let testHostComponent: TestHostComponent;
let component: AppComponent;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [AppComponent, TestHostComponent]
.....
}).compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(TestHostComponent);
testHostComponent = fixture.componentInstance;
component = fixture.debugElement.query(By.directive(AppComponent)).componentInstance;
fixture.detectChanges();
});
});
Затем вы можете запустить тест, чтобы увидеть, применяется ли к классу кнопки в вашем тестовом компоненте:
it('should add "hidden" class to HTML elements with "button-visible" class', () => {
const buttonElement = fixture.debugElement.query(By.css('.button-visible.hidden'));
expect(buttonElement).toBeTruthy();
});