代码之家  ›  专栏  ›  技术社区  ›  J-man

在Angular6项目中,如何使用Jasmine在选择器之前测试:的内容?

  •  0
  • J-man  · 技术社区  · 6 年前

    我有个标签 content 正在设置 :before 选择器将更改标签的内容属性,具体取决于是否选中与此标签关联的复选框。这可以用 茉莉 在我的角6项目?

    这是我的代码:

    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';
    }
    

    茉莉花单元试验

    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');
    });
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   J-man    6 年前

    找到了一种方法 :before 选择器使用 window 对象和 getComputedStyle :

    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');
    });