Jasmine 3.3
Angular Jasmineでハマったポイント
もしかしたらng-ifとかで、画面の表示をガッツリ切り替えてないですか?
(ローディング等)
とりあえずfixture.debugElement.nativeElementを表示してみて、そこに目的の要素がなければquerySelectorで何しようと取れません。
必要あれば、ngifをクリアできる様にcomponentのパラメータをいじりましょう
test.component.html
<app-loading *ngIf='isLoading'></app-loading>
<div *ngIf='!isLoading'>
<!--
ここにほしい要素
-->
</div>
蛇足ですが、fixture.detectChanges();を忘れずに
蛇足2
もしテンプレートの要素を取得したい場合、
下記二つは同じ(inputの要素をnameでとる場合)
test.component.spec.ts
let element = fixture.debugElement.nativeElement.querySelector('input[name=approveAmount]');
let element = fixture.debugElement.query(By.css('[name=approveAmount]')).nativeElement as HTMLInputElement;
//あとは入力して、dispatchすれば反映されるよ!
element.value = something;
element.dispatchEvent(new Event('input'))