2016-12-30 75 views
9

我正在寫一個Angular2測試組件獲取元素,我注意到在教程這一行:Angular2測試 - 通過標識

de = fixture.debugElement.query(By.css('h1')); 

de被定義爲DebugElement類型。

我怎樣才能得到DebugElement ID?

這看起來非常簡單,但我無法在文檔中找到任何方向。

回答

11

您還可以使用by.css

de = fixture.debugElement.query(by.css('#theid')); 
+0

我得到:TypeError:platform_browser_ 1.By.id不是函數 – ohadinho

+1

我認爲你的例子屬於角1文檔 – ohadinho

+0

你有沒有嘗試過使用by.css選擇器ID的散列? –

-1

工作對我來說:

文件... component.html:

<ul id="submenu"> 

    <li> 
     <a [routerLink]="['blankpage']"><span>Blank Page</span></a> 
    </li> 
</ul> 

文件...- spec.ts:

import { SidebarComponent} from './sidebar'; 
import { TestBed, async } from '@angular/core/testing'; 
import { HttpModule } from '@angular/http'; 
import { RouterTestingModule } from '@angular/router/testing'; 
import { ComponentFixture} from '@angular/core/testing'; 
import { By }    from '@angular/platform-browser'; 
import { DebugElement } from '@angular/core'; 

describe('...',() => { 
let comp : SidebarComponent; 
let fixture : ComponentFixture<SidebarComponent>; 
let de : DebugElement; 
beforeEach(async(() => { 
    TestBed.configureTestingModule({ 
     declarations: [ 
     SidebarComponent 
     ], 
     imports: [RouterTestingModule,HttpModule] 
    }).compileComponents(); 
    })); 
    beforeEach(() => { 
    TestBed.configureTestingModule({ 
     declarations: [ 
      SidebarComponent 
     ] 
    }); 
    TestBed.compileComponents(); 
    fixture = TestBed.createComponent(SidebarComponent); 
    fixture.detectChanges(); 
    de = fixture.debugElement; 
}); 

it('Sidebar element "Blank Page" was created',() => { 
     expect(de.nativeElement.querySelector('ul.submenu a span').textContent).toContain('Blank Page') 
     expect(de.nativeElement.querySelector('ul.submenu a span').textContent).toBeDefined() 
    }); 

    it('Checking ul id',() => { 
    expect(de.nativeElement.querySelector('ul').getAttribute('id')).toMatch('submenu') 
    }); 

)} 
+0

這完全忽略了關於id的問題。 –

+0

大聲笑...'id'和'class'在css中獲取選擇器有什麼區別? –

+0

問題在於,OP大概對他的元素具有'id',並且想要在他的測試中使用它來查找它們,並且在最近的編輯之前,您的迴應沒有提及'id'。儘管如此,它並沒有超出JJB的簡潔明瞭的答案。 'By.css(「#myid」)是更好的方法。 –