Güvenilir Servis/Aktör'ü sadece yapıcıyı arayarak ve sonra da yöntemlerini test ederek test edemiyorum. var testService = new SomeService();
, bir NullReferenceException atar. Öyleyse dağıtılmış hizmet ile ne yapabilirim?Servis Kumaş Birimi Test Etme ve Bağımlılık Enjeksiyonu
Bu konuşulan SF Güvenilir Hizmetler/Aktörler standart .NET sınıfları ve konuşlandırılmış S/A'nın birim testi belki de garip bir fikir olmadığını anlıyorum. Her neyse şimdi denemeye çalışıyorum. Örneğin,
. Bir Hizmet kurdum, testte bir Proxy nesnesi oluşturdum ve Hizmet giriş sırasına öğe ekledim. Sonra giriş sırası sayısı = 1 olduğunu iddia etmeliyim. Ve eğer bir Hizmet dağıtmış olsaydım ve diğer İstemciler/Hizmetler/Aktörler giriş kuyruğunu kullanmadıysa çalışır. Ama bir dahaki sefere bu test başarısız olacak, sorun bu. Hizmetin diğer tüketicilerle çalışmayı bırakmasını, kuyruğunu bırakmasını ve test etmesini sağlaması gerekiyor. Bu amaçla, bazı TestMode özelliklerini ve PropareoForTests/TestingCompleted gibi bazı yöntemleri oluşturabilir ve test öncesi ve sonrası bunları test istemcisinden arayabilirim.
Bunun böyle yapmak kötü bir fikirdir. Belki SF testi için bazı kurallar var mı? Teşekkürler.
GÜNCELLEME:
Bu YAPILACAK dize buldum Service Fabric Web Reference Application example araştırırken:
/// TODO: Temporary property-injection for an IServiceProxyWrapper until constructor injection is available.
o SF Hizmetleri DI desteği bu kadar artıracağını ifade ediyor mu? Oyunculara ne dersin?
Oluşturucu bağımlılığı enjeksiyonu aslında aktörlerde şu anda hazır! Aktör türünüzü kaydettiğinizde, aslında aktör sınıfının örneğinizi kontrol edebilmeniz için Actor sınıf örneğini oluşturduğunuz bir Func <> olan bir "fabrika" da kaydedebilirsiniz, böylece oradan bağımlılıkları enjekte edebilirsiniz. Hizmetlerde bunu zaten yapabilirsiniz, Parti Kümesi örneğinde nasıl yaptığımızı kontrol edin: https://github.com/Azure-Samples/service-fabric-dotnet-management-party-cluster/tree/master/PartyCluster/ ClusterService –
Birlik ile bağımlılık enjeksiyon yapmaya bir cevap yazdım: http://stackoverflow.com/questions/30384780/azure-service-fabric-actor-dependency-injection/35900027#35900027 –
@VaclavTurecek Linkiniz bozuk – Dismissile