Galera, bom dia. To com uma dúvida em um teste unitário que está sinistro, se puderem dar um help eu agradeço. Basicamente não to conseguindo testar um componente, seguem os códigos simplificados.
@Component({
selector: 'app-offer-card',
templateUrl: './offer-card.component.html',
styleUrls: ['./offer-card.component.scss']
})
export class OfferCardComponent implements OnInit {
@ViewChildren('container') containeres: QueryList<any>;
constructor(
public elementRef: ElementRef
) {}
ngOnInit(): void {
}
clickAccordion(index: number) {
let container = this.containeres.get(index).nativeElement;
if (container.classList.contains('show')) {
console.log('show')
} else {
console.log('NoShow')
}
}
Encurtei o código para ficar mais fácil de entender, o problema é que no evento clique eu disparo o método clickAccordion
e nos testes unitários devido ao objeto containeres
não estar conseguindo fazer o mock dele, rola uma mensagem de erro TypeError: Cannot read properties of undefined (reading 'nativeElement')
No teste está assim
it('Deve chamar funções de controle do accordion quando clicar no botão de Accordion', fakeAsync(() => {
spyOn(component, 'toggleAccordion');
component.toggleAccordion(0);
expect(component.toggleAccordion).toHaveBeenCalled();
}));
})
Se eu deixo assim, o teste OK, mas não resolve o coverage, se eu retiro a linha do spyOn
, aí ele dá o erro acima, o que fazer nesse caso?