2011-03-17 14 views
7

Bir WPF Prism uygulaması geliştiriyorum ve her şey yolunda gidiyor. Görünüm modellerimin tümü MEF tarafından enjekte edilen arayüzlere sahiptir. Ancak, görünüm modelleri için arabirimlerin yararını gerçekten anlamıyorum. Ne de olsa bir görüş kendi görüş modeline bağlı, bu yüzden başka uygulamaların asla olmayacağını düşünüyorum.Görünüm modelleri ve arabirimler hakkında

Aslında, benim de görünümlerim için arabirim var. Bu aynı zamanda aşırı olduğunu mu görünüyor?

Bu yüzden sorum şu: tüm görünümleri kaldırıp model arayüzlerini görüntüleyemiyorum ve görünümleri enjekte edip modelleri doğrudan görüntüleyemiyorum? Görünümler ve görünüm modelleri için arayüzleri tutmak için herhangi bir sebep var mı?

Thx, L

cevap

4

VieWModel'lerinizi arabirim oluşturmak, bunları bir sınamada alay etmenin yararlarını sağlar, Görünümlerinizin arayüzlenmesi bazı aşırı hızlara benziyor. Görüşlerinizi değiştirmezsiniz ve kullanıcı arayüzü testi ViewModel'inizin alayları üzerinde yapılabilir, böylece onları gerçekten aramanıza gerek kalmaz.

+0

Neden ViewModels'inizi test etmek zorundasınız? Ben sadece gerçek ViewModel'i kullanıyorum. –

+0

ViewModels ile bunlarda beklentileri birleştirmek için alayım. Bu şekilde, Görüntülemelerin bunları test ederken nasıl görünmesi gerektiğini biliyorum. ViewModels'i verilerle dolduracak ve test sırasında bunları sağlayacak bir test yazabilirim. Gerçekten de aynı. –

+1

teşekkürler, bu yüzden, aşağıdakileri nedeniyle arayüz modellerinde gerçekten çok fazla katma değer olmadığını söylemeyi diyorum: 1. Onları alay etmemize gerek yok, çünkü test edilmesi gereken görüş modelinin kendisi. 2. Bu nedenle, bir alt görüş modelinin alay edilmesi, gerçek olanı da test etmek istediğimizden çok anlamlı değildir. 3. Görüşleri test etmek için gerçek görünüm modellerini veriyle doldururuz. 4. Görüş kendi görüş modeline bağlı olduğu için her zaman 1 uygulama olacaktır. –

2

Sana birim test ederken kullanılmak üzere bu arabirimleri uygulayan mocks yazabilir olurdu ViewModels için arayüzleri için aklınıza gelebilecek en büyük nedeni. Bir ViewModel diğeriyle konuşabileceğinden, ilk testi yaparken ikinci ViewModels davranışını saptamanıza olanak tanır.

MVVM deseni, verileri ayırarak ve UI katmanından kontrol ederek (birim testleri yazmak daha zor olan) sınıfları test etmeyi kolaylaştırır. Şahsen, benim görüşlerim için arayüzler yazmam.

7

Bu bir aşırı sıkmadır. ViewModel'lerinizle dalga geçmek isteyebileceğinizi anlıyorum, ancak pratik olmak için daha önemli olduğunu düşünüyorum. Ayrıca, neden ViewModel'lerinizle dalga geçmeniz gerekiyor? Alay edilmesi gereken herhangi bir mantık, bir hizmet sınıfı olan IMHO'ya konmalıdır.

+0

Bu benim de ilk düşüncemdi. Avantajı, eğer birden fazla görünüm modeliniz varsa, bunlardan birini test edebilir ve diğerleriyle dalga geçebilirsiniz. Ben sadece bunu yapıp yapmayacağımı merak ediyorum ... çoğu mantık gerçekten enjekte edilen ve sahte uygulamaların yerini alabilecek olan 'hizmetler' içinde. –

İlgili konular