İki yöntemle GetAllProducts ve GetProductByType bir ProductRepository var ve GetProductByType adresindeki mantığı test etmek istiyorum. Dahili olarak, GetProductByType GetAllProducts'a bir çağrı yapar ve ardından doğru olanları filtreler. Moq
public virtual IEnumerable<Product> GetAllProducts()
{
//returns all products in memory, db etc
}
public virtual IEnumerable<Product> GetProductsByType(string type)
{
return (from p in GetAllProducts() where p.Type == type select p).ToList();
}
Yani benim test ben alay GetAllProducts tüketir, hangi orijinal GetProductsByType benim testte tanımlanan ürünlerin listesini döndürür, böylece GetAllProducts çağrısına alay ve sonra çağırmak istiyorum.
Aşağıdaki kod gibi bir şey deniyorum, ancak özgün GetProductByType uygulanmadı, o da alay-out. TypeMock'ta bunu çözen bir CallOriginal yöntemim var, ancak bunu Moq ile çözemiyorum. Herhangi bir fikir?
var mock = new Mock<ProductRepository>();
mock.Setup(r => r.GetAllProducts()).Returns(new List<Product>() {p1, p2, p3});
var result = mock.Object.GetProductsByType("Type1");
Assert.AreEqual(2, result.Count());
Ürün Deponuzu'nu alt sınıflara ayırırdım ve hiç bir şekilde alay etmem. "FakeProductRepository" ürününüz sabit kodlanmış bir ürün listesi döndürür ve GetProductsByType'ı bu listeye karşı test edebilirsiniz. –
Büyük öneri, bunu düşünmemiştim ... Cuma! – rodbv