In the following section, we will test some information displayed in the DOM. First, we will cover the following statements:
CSS :first-child Selector
Select and style every element that is the first child of its parent:
p:first-child {background-color:yellow;}
HTML DOM textContent Property
Get the text content of an element:
var x =document.getElementById("myBtn").textContent;
Once we have understood these two statements one for CSS and the other for DOM we can now test the results we should expect in our test case.
it("should display the first course", () => {component.courses =setupCourses();fixture.detectChanges();constcourse=component.courses[0];constcard=el.query(By.css('.course-card:first-child')),title=card.query(By.css('mat-card-title')),img=card.query(By.css('img'));expect(card).toBeTruthy('Could not find course card');expect(title.nativeElement.textContent).toBe(course.titles.description);expect(img.nativeElement.src).toBe(course.iconUrl);});
Let's cover a couple of things as well, we should know that if we are don't have a class we can write the proper HTML element like follows:
constcard=el.query(By.css('.course-card:first-child')),// CLASStitle=card.query(By.css('mat-card-title')),// ELEMENTimg=card.query(By.css('img')); // ELEMENT