2012-07-17 20 views
9

endekslendi. Sahte bir nesne oluşturdum. i hatası alıyorum onun mülkü alay etmek isterken Şimdialaycı Ben Moq kullanarak birim testleri yazıyorum özelliği

burada

benim kodudur "bir ifade ağaç bir dizine özelliğini içeremez". İşte

public Node GetNode(IMyInterface interface, string itemName) 
{ 
    return interface.Items[itemName]; 
} 

Bu çizgi bana hata veriyor birim test

var expected = new Node(); 
var itemName = "TestName"; 
var mock = new Mock<IMyInterface>(); 
mock.Setup(f => f.Items[itemName]).Returns(expected); 
var target = new MyClass(); 

var actual = target.GetNode(mock.Object, itemName); 
Assert.AreEqual(expected, actual); 

olduğunu.

Bu işlevi nasıl uygulayabilirim?

+0

kullanarak özelliği erişme, bir COM nesnesi ve işlevini olsun vardı. İfade ağaçları, hata durumları gibi dizinlenmiş özellikler içeremez. Dizinlere başvurmak için listedeki öğeye erişmek için kodunuzu yeniden düzenlemelisiniz. –

+0

"interface.Items [itemName];" değiştiremiyorum; i COM aracılığıyla alıyorum çünkü herhangi bir şekilde testinde bunu, –

+0

tam Öğeler nedir? Tam arayüz tanımını sağlayabilir misiniz? –

cevap

12

Arabirim bunun yerine doğrudan, dizin kullanım işlevi olsun bir moq sorun değil

mock.Setup(f => f.get_Items(itemName)).Returns(expected); 
+0

Eğer ([öğeadı] f => f) 'mock.Setup denedin mi İade (beklenen);.'? Durumunuzda (COM) (C# ve .NET sürümleri nedir?) Çalışıp çalışmadığından emin değil, ancak çok daha iyi görünüyor. –

İlgili konular