yoklateknik mülakat

Frontend Angular Testing Performance Mülakat Soruları

75 doğrulanmış Frontend Angular Testing Performance mülakat sorusu — cevaplarıyla çöz, açıklamalarıyla öğren, gerçek simülasyonda kendini test et.

Gerçek simülasyonu dene →

Örnek sorular

Angular Testing PerformanceZorluk 1
Bir Angular unit testinde TestBed.configureTestingModule({...}) ifadesinin temel amacı nedir?
  • aUygulamanın production build sürecini başlatmak
  • bTestin ihtiyaç duyduğu declarations/imports/providers ile bir Angular test modülü kurmak
  • cGerçek bir tarayıcı penceresi açıp end-to-end testler çalıştırmak
  • dUygulamayı paketlemek, çıktısını minify etmek ve build sonrası nihai production bundle boyutunu ölçmek
Açıklama:TestBed.configureTestingModule(), teste özel bir Angular modülü oluşturur ve test edilen bileşeni tanımlamana, ihtiyaç duyduğu import/provider'ları sağlamana olanak tanır. Jasmine/Karma ile yazılan Angular unit testlerinin standart giriş noktasıdır.
Angular Testing PerformanceZorluk 1
let fixture: ComponentFixture<CounterComponent>;

beforeEach(() => {
  TestBed.configureTestingModule({ declarations: [CounterComponent] });
  fixture = TestBed.createComponent(CounterComponent);
});

fixture.detectChanges() ilk kez çağrıldığında ne olur?
  • aBileşen yok edilir ve ngOnDestroy çalışır
  • bHiçbir şey, detectChanges() yalnızca ngOnInit zaten tetiklendikten sonra çalışır
  • cAngular change detection çalıştırır, bu da ilk çağrıda ngOnInit'i de tetikler
  • dBileşenin template'i ilk kez derlenir
Açıklama:Testlerde Angular change detection'ı otomatik çalıştırmaz. fixture.detectChanges() çağırmak bileşenin yaşam döngüsünü (ilk ngOnInit dahil) tetikler ve render edilen DOM'u mevcut bileşen durumuyla eşleşecek şekilde günceller.
Angular Testing PerformanceZorluk 2
Klasik Karma tabanlı bir Angular unit-test kurulumunda framework ve tarayıcı runner rollerini hangi araçlar üstlenir?
  • aTest framework olarak Jasmine, test runner olarak Karma
  • bTest framework olarak Mocha, test runner olarak Cypress
  • cTest framework olarak Jest, test runner olarak Playwright
  • dTest framework olarak JUnit, test runner olarak Selenium
Açıklama:Bu kurulumda Jasmine, describe/it/expect test API'sini sağlar; Karma ise tarayıcıları başlatıp spec'leri çalıştırır. Angular CLI varsayılanları sürümler arasında değiştiğinden bu eşleşme her yeni projenin güncel varsayılanı kabul edilmemeli, yapılandırılmış runner üzerinden tanınmalıdır.
Angular Testing PerformanceZorluk 1
class MathService {
  square(n: number): number {
    return n * n;
  }
}

describe('MathService', () => {
  it('squares a number', () => {
    const service = new MathService();
    expect(service.square(4)).toBe(16);
  });
});

Bu servis testi neden TestBed'i tamamen atlayabilir?
  • aJasmine testleri, test edilen sınıftan bağımsız olarak asla TestBed gerektirmez
  • bMathService, @Injectable kullanıyor, bu yüzden Angular onu otomatik sağlar
  • cTestBed yalnızca bileşenler için çalışır, servisler için asla çalışmaz
  • dMathService'in hiç bağımlılığı yok, bu yüzden doğrudan new ile örneklenebilir
Açıklama:TestBed, Angular'ın dependency injection'ının constructor bağımlılıklarını çözmesi gerektiğinde ya da bir bileşenin render ortamına ihtiyacı olduğunda önem kazanır. Enjekte edilen bağımlılığı olmayan düz bir sınıf basitçe new ile örneklenebilir, bu da testi hızlı ve basit tutar.
Angular Testing PerformanceZorluk 2
it('renders the title', () => {
  fixture.detectChanges();
  const el: HTMLElement = fixture.nativeElement;
  expect(el.querySelector('h1')?.textContent).toContain('Dashboard');
});

fixture.nativeElement neye erişim sağlar?
  • aBileşenin TypeScript sınıf örneğine
  • bBileşen tarafından render edilen kök DOM elementine
  • cBileşenin tanımlandığı Angular modülüne
  • dGerçekte hiç render etmeyen sahte bir DOM versiyonuna
Açıklama:fixture.nativeElement, bileşenin host elementi için gerçekten render edilmiş DOM node'unu sunar; böylece testler render edilen içeriği doğrulamak için querySelector gibi standart DOM API'leriyle sorgu yapabilir. Bileşen örneğinin kendisi ayrıca fixture.componentInstance ile erişilebilir.
Angular Testing PerformanceZorluk 2
Angular testlerinde fakeAsync temel olarak ne için kullanılır?
  • aAsenkron kodu (timer'lar, promise'ler), tick() ile kontrol edilebilen senkron görünümlü bir test zone'unda çalıştırmak için
  • bTest sırasında yapılan her HTTP çağrısını otomatik olarak mock'lamak için
  • cTest sırasında herhangi bir yerde yapılan her HTTP çağrısını, endpoint ya da status code'dan bağımsız olarak otomatik olarak yeniden dener
  • dGerçek bir ağ isteğini yanıtı önbelleğe alarak hızlandırmak için
Açıklama:fakeAsync, test fonksiyonunu, setTimeout ve promise resolve gibi asenkron işlemlerin gerçek geçen zamana bağlı kalmadan tick() ile deterministik olarak simüle edilip ilerletilebildiği özel bir zone içine sarar.

2925 soruluk Frontend bankasında kendini sına.

Mülakata başla