单击事件本机元素(锚标记)的单元测试

时间:2019-02-26 13:38:21

标签: angular unit-testing karma-jasmine

我有一些URL的简单锚标记。测试的目的是当单击链接时,应在新选项卡中将其打开,然后将给定的URL与打开的新选项卡的URL进行比较。

我尝试将spyOn与window对象一起使用。但是我没有成功。

这是我尝试过的。

<a href="https://www.google.com/" target="_blank">google</a>


import { ComponentFixture, TestBed } from '@angular/core/testing';
import { AppComponent } from './app.component';

describe('guideline link', () => {
    let comp: AppComponent;
    let fixture: ComponentFixture<AppComponent>;

    beforeEach(() => {
        TestBed.configureTestingModule({
            imports: [],
            declarations: [AppComponent],
            providers: [],
        });

        fixture = TestBed.createComponent(AppComponent);

        comp = fixture.componentInstance;
    });

    it('link should be opened in separate tab', async () => {
        fixture.detectChanges();
        spyOn(window, 'open');
        const link = fixture.debugElement.nativeElement.querySelector('a');
        fixture.whenStable().then(() => {
            expect(link).toHaveBeenCalled();
            expect(window.open).toHaveBeenCalledWith('https://www.google.com/');
        });

    });

});

1 个答案:

答案 0 :(得分:0)

面临类似问题。 这对我有用:

  const link = fixture.debugElement.nativeElement.querySelector("a");
  link.click();