Jasmine Unit testing a function that use's document query

Viewed 298

I need some help to get my code coverage up. I have this function in my ts file and need to understand how to have this if statement execute.

setWidth(): void {

let maxHeight = 0;

document.querySelectorAll<HTMLElement>(`.body`).forEach(element => {

  if (element.offsetHeight > maxHeight){

    maxHeight = element.offsetHeight;

  }

});

I am not clear on how I would get the forEach to execute in my spec.ts file.

1 Answers

Try this:

it('should set maxHeight', () => {
  // set a spy and return a mocked array.
  // add as any here below as well.
  spyOn(document, 'querySelectorAll').and.returnValue([{ offsetHeight: 20 }] as any);
  service.setWidth();
  // below is a bad expectation but I am not sure what to expect for you from the
  // code provided. Do an assertion that relates to setWidth.
  expect(1).toBe(1);
});
Related