typescript - Angular CLI tarafından oluşturulan test belirli bir klasörde başarısız oluyor
Angular CLI (v6.1.4) kullanarak ng g c components/foo komutunu çalıştırarak bileşenler klasörümde bir bileşen oluşturdum ve ardından ng test komutunu çalıştırdım. Yeni bileşen için test aşağıdaki hatalarla başarısız oldu:
Async() test yardımcı programı için Zone gereklidir ancak bulunamadı. Lütfen ortamınızın zone.js/dist/zone.js içerdiğinden emin olunuz, atıldı
Hata: Yasadışı durum: FooComponent yönergesi için özet yüklenemedi.
Tuhaf bir şekilde, eğer ng g c foo komutunu çalıştırırsam (yani bileşenler klasöründe oluşturulmazsa), test o zaman geçiyor. Testlerim diğer klasörler için sorunsuz çalışıyor, ancak bu bileşenler klasörümdeki ilk test (ve aynı zamanda bir bileşen için de ilk test). Diğer testlerin hiçbiri asenkron değil.
ng test konusunda oldukça yeniyim, bu yüzden çok bariz bir şeyi kaçırıyor olabilirim. Varsayılan testin çalışması için zone.js ile bir şeyler ayarlamam gerektiğini beklemiyordum. Bunu nerede yapılandırmalıyım? Yoksa burada kaçırdığım başka bir şey mi var, belki de components klasörüme özgü bir şey?
Cevap #1
foo.component.spec.ts dosyasının en üstüne aşağıdakileri eklemek sorunu çözdü, ama testlerin components klasöründe değillerse neden çalıştığını hâlâ anlamıyorum. Eğer birinin bir açıklaması varsa veya her bileşenin test dosyasında bunu tekrarlamayı içermeyen bir çözümü varsa, duymak isterim!
import 'zone.js';
import 'zone.js/dist/async-test.js';
import 'zone.js/dist/proxy.js';
import 'zone.js/dist/sync-test';
import 'zone.js/dist/jasmine-patch';
Cevap #2
Benim durumumda burada, projemin ana test yapılandırmasının farklı bir sürümüyle oluşturulmuş olabileceğini merak ettim, bu yüzden Angular CLI ile yeni boş bir proje oluşturdum, her iki src/test.ts sürümünü karşılaştırdım ve bu dosyanın gerçekten farklı olduğunu fark ettim, uygulamamda ilk satır olarak aşağıdaki satır eksikti:
import 'zone.js/dist/zone-testing'Bunu src/test.ts dosyasına ekledikten sonra, bu hata kayboldu!
Bu muhtemelen, Tim'in cevabında önerdiği gibi tüm bu js dosyalarını tüm test dosyalarına ithal etmekten çok daha iyidir.
