我正在尝试使用jasmine测试我的组件,但是我不确定为什么我fail

这是你的代码
https://stackblitz.com/edit/angular-bup8gb
javascript - 为什么使用toEqual文本在 Angular 上不匹配?-LMLPHP

describe('initial display',()=>{
   it('show counter text',()=>{
      debugEl = fixture.debugElement.query(By.css('p.abc'));
      el = fixture.nativeElement;
       fixture.detectChanges();
     expect(el.textContent).toEqual('counter 1')
   })
 })

最佳答案

这是执行所需操作的正确语法:

describe('initial display',()=>{
  it('show counter text',()=>{
    debugEl = fixture.debugElement.query(By.css('.abc'));
    el = debugEl.nativeElement; //** You need to get the element from the degubEl
    fixture.detectChanges();
    expect(el.textContent).toEqual('counter 1')
  })
})


这是另一种方法,但是如果模板中有多个p元素,则可能不希望这样做:

describe('initial display',()=>{
  it('show counter text',()=>{
    el = fixture.nativeElement;
    fixture.detectChanges();
    expect(el.querySelector('p').textContent).toEqual('counter 1')
  })
})

10-07 19:28
查看更多