gpt4 book ai didi

angular - 单元测试将类动态添加到 HTML 按钮 Jasmine

转载 作者:行者123 更新时间:2023-12-05 09:16:35 24 4
gpt4 key购买 nike

我是 Jasmine 的新手,正在尝试学习如何在 Angular 4 中为我的组件编写单元测试。我正在向组件的 ngOnInit() 按钮的类列表中添加一个类。现在,当我尝试运行测试时,它说找不到 null 的属性“classList”。到目前为止,这是我尝试过的。

Component.ts

ngOnInit() {
document.querySelector('.button-visible').classList.add('hidden');
}

这就是我在我的 spec ts 文件中尝试做的事情。

Component.spec.ts

describe('AppComponent', () => {
let component = AppComponent;
let fixture: ComponentFixture<AppComponent>;
let compiledElement;
});

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

beforeEach(() => {
fixture = TestBed.createComponent(AppComponent);
component = fixture.componentInstance;
compiledElement = fixture.debugElement.nativeElement;
fixture.detectChanges();
});

it('should create component', () => {
expect(compiledElement.querySelector('button.button-visible').classList).toContain('hidden');
expect(component).toBeTruthy();
});
});

我不知道如何测试。感谢您的帮助。

最佳答案

为了在您的组件需要在其外部查找内容时运行测试,您需要创建一个使用您的组件并具有所有所需项目的测试工具。在您的情况下,您将需要一个包含 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();
});

关于angular - 单元测试将类动态添加到 HTML 按钮 Jasmine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50071961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com