Angular testlerinde herhangi bir sınıfın sahte örneğini nasıl alırsınız
Eğer burada bir servisi veya bir token’ı sahte hale getirmek için bulunuyorsanız, lütfen MockProvider ile ilgili bölümü
okuyun.
Eğer varsayılan sahte davranışını değiştirmek istiyorsanız, lütfen sahte nesneleri nasıl özelleştirirsiniz
bölümünü okuyun.
Eğer Angular bildirilerine ait olmayan bir sınıfın sahte nesnesine ihtiyacınız varsa, örneğin HTMLInputElement
, lütfen devam edin.
Angular testlerinde bir sınıfın sahte örneği, MockService
fonksiyonu ile oluşturulabilir. Sahte örnek, orijinal sınıfla aynı yöntemlere sahiptir, fakat bunların hepsi boş metodlardır. Ayrıca, MockService
, istenen örneğin şekliyle birlikte, özelliklerini ve yöntemlerini özelleştirmek için kabul edilir.
Not: Bu durum, bir sınıfın onlarca yöntemi olduğunda ve biz bunlardan birkaçının davranışını değiştirmek istediğimizde faydalıdır.
const i1 = MockService(MyClass);
// i1.method() undefined döner
const i2 = MockService(MyClass, {
method: () => 'Kendi Özel Davranışım',
});
// i2.method() 'Kendi Özel Davranışım' döner
Basit örnek
Bir servisin HTMLInputElement
döndüren bir yöntemi olduğunu varsayalım, ancak servisi HTMLInputElement
ile beraber sahte hale getirmek istiyoruz, çünkü TargetComponent
ngOnInit
içinde this.htmlService.input.focus()
gibi focus()
yöntemini çağırıyor.
TestBed.configureTestingModule({
declarations: [TargetComponent],
providers: [
// kazanç
MockProvider(HtmlService, {
input: MockService(HTMLInputElement),
}),
],
});
Sahte nesneleri oluştururken, mevcut metotları ve özellikleri kolayca özelleştirmeyi unutmayın. Bu, testlerinizin daha efektif olmasını sağlar.