如何解决如何使用角度开玩笑的单元测试在条件状态下测试按钮
我试图在我的 html 组件中以 angular 设置测试按钮,指的是单击它,根据某些参数显示或不显示它,但该按钮根本无法识别。 我正在使用 Angular+Jest,因此首先这是我要模拟的 html 组件:
<button
*ngIf="flag"
(click)="goBackToFormerUrl()"
js-selector="back-button-link"
type="button"
>
</button>
如果我的 ts 组件中的某些方法中的变量(标志)为真,则将显示此按钮 然后在我的组件上有一个方法可以触发标志变量 true 或 false 。 稍后在我用于测试的规范文件中,我开始创建一个通用方法容器,该容器将触发我的目标组件,并创建该 HTML 类的模拟以提取按钮。
describe('The CustomerSupportPageComponent',() => {
let component: PageComponent;
let fixture: ComponentFixture<PageComponent>;
let page: Page;
beforeEach(
waitForAsync(() => {
TestBed.configureTestingModule({
imports: [RouterTestingModule],declarations: [PageComponent],schemas: [CUSTOM_ELEMENTS_SCHEMA],})
.compileComponents()
.then(() => {
fixture = TestBed.createComponent(PageComponent);
component = fixture.componentInstance;
page = new Page();
});
})
);
test('It is a valid component',() => {
expect(component).toBeTruthy();
});
describe('some name of method',() => {
let button;
beforeEach(() => {
component.formerUrlLink = 'block';
fixture.detectChanges();
button = page.getBackButton();
});
it('Should appear button back',() => {
expect(button.getBackButton().style.display).toEqual('block');
});
it('redirect to the backUrl param content',() => {
button.click();
...other stuffs
});
class Page {
private _el: HTMLElement;
constructor() {
this._el = fixture.nativeElement;
}
getBackButton(): HTMLElement {
return this._el.querySelector('[js-selector="back-button-link"]');
}
}
})
之前的所有公开都是我对那个按钮及其功能的测试。首先初始化一个通用的描述方法,声明测试针对的组件,以及测试成功需要使用的一些变量和模拟类
这个方法将负责访问在分配给变量按钮的模拟类中重新创建的按钮。然后在方法(方法的某个名称)上我触发了两个测试 第一个应该评估显示该按钮的过程。 单击该按钮后,第二个将触发到某个地方的路线。 这个按钮是通过初始化一个模拟类 Page 来访问的,该类在其构造函数中具有一个 HTMLElement 类型的变量,该变量将表示通过 Componet Fixture 为这些测试重新创建环境的本机元素;然后在同一个模拟类上,检索 js 选择器的按钮标识的方法被初始化为 getBackButton,简而言之,它会将我想要访问的按钮的 DOM 带到 test(page.getBackButton),但由于某种原因按钮无法识别......我试图登录该模拟类的构造函数,引用该按钮的元素并公开 null
console.log(this._el.querySelector('[js-selector="back-button-link"]')).
我如何访问此按钮?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。