如何在angular 4+上测试输入的标签?

时间:2019-04-17 21:30:20

标签: angular typescript unit-testing jasmine karma-jasmine

我有一个像这样的角组件:

<form>
  <label for="Name">Click me</label>
  <input type="text" id="Name" name="Name" />

  <label for="Name2">Click me 2</label>
  <input type="text" id="Name2" name="Name" />

</form>

我需要进行单元测试,以验证输入[id = Name]是否具有带有文本的标签:“单击名称”。如何使用jasmin和karma在angular上执行该单元测试?

2 个答案:

答案 0 :(得分:0)

获取元素并进行测试。

it('should check label name', () => {
    let labelName = fixture.debugElement.query(By.css("label[for=Name]"));
    expect(labelName).toBe("Click Me");
})

问题是如何与该元素进行交互,而不是如何对其进行测试。

祝你好运!

答案 1 :(得分:0)

您发布的代码有些混乱。 下面是一个可能的测试标签的解决方案,无论是否输入。

导入:

从'@ angular / core / testing'导入{ComponentFixture,TestBed};

从'@ angular / platform-b​​rowser'导入{通过};

代码:

let fixture: ComponentFixture<YourComponent> = TestBed.createComponent(YourComponent);
const queryValue = fixture.debugElement.query(By.css('#your-label-id'));

expect(queryValue).toBeTruthy();
expect(queryValue.nativeElement).toBeTruthy();
expect(queryValue.nativeElement.outerText).toContain("Text expected in the label");