javascript - 如何测试 :before selector with Jasmine in an Angular 6 project? 的内容

标签 javascript css angular jasmine karma-jasmine

我有一个标签,其 content:before 选择器中设置,并且取决于是否选中与该标签关联的复选框,将更改标签的内容属性。是否可以在我的 Angular 6 元素中使用 Jasmine 进行测试?

这是我的代码:

HTML

<input id="myCheck" class="checkbox" type="checkbox" />
<label for="myCheck" class="label"></label>

CSS

.label{
    color: black;
    font-size: 14px;
}
.label:before{
    content: 'NOT Checked';
}

.checkbox {
    display: none;
}
.checkbox:checked + label:before {
    content: 'Checked';
}

Jasmine 单元测试

it('should say "Checked" when checkbox is checked and "NOT Checked" when not checked', () => {
    const check = el.query(By.css('#myCheck')).nativeElement;
    expect(el.query(By.css('#myCheck + label:before'))).toBe('NOT Checked');

    check.click();
    fixture.detectChanges();

    expect(el.query(By.css('#myCheck + label:before'))).toBe('Checked');
});

最佳答案

使用 window 对象和 getComputedStyle 找到了获取 :before 选择器的方法:

it('should say "Checked" when checkbox is checked and "NOT Checked" when not checked', () => {
    const check = el.query(By.css('#myCheck')).nativeElement;
    let content = window.getComputedStyle('.label')).nativeElement, ':before').getPropertyValue('content');
    expect(content).toBe('NOT Checked');

    check.click();
    fixture.detectChanges();
    content = window.getComputedStyle('.label')).nativeElement, ':before').getPropertyValue('content');
    expect(content).toBe('Checked');
});

关于javascript - 如何测试 :before selector with Jasmine in an Angular 6 project? 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51522617/

相关文章:

javascript - 小书签:找不到添加到文档中的元素

CSS(或非)动画图像在鼠标悬停时变得透明,然后再次变得不透明

css - col-sm-2 和 col-sm-1 之间的 Bootstrap css 列宽

html - Angular:根据上一行中的值显示隐藏一行

javascript - 将内联 XML 和内联 XSL 转换为 XHTML

javascript - $ ("html").scrollLeft(值);在 Chrome 中不工作

javascript - 允许用户在创建时指定 Backbone 模型的 ID

css - child 和 parent 之间的 z-index

Angular 无法接收发射值

javascript - 如何在 Highcharts 中创建曲线下的突出区域?