2011-09-22 24 views
5

Taklit etmek istediğim güçlü bir önbelleğe alma arabirim var. Bu herhangi bir nesne alır ve bu gibi onları döndürür:Genel yöntem çağrısı alaylı olarak çağırma

interface IMyCache 
{ 
    void Add(int key, object obj); 
    T Get<T>(int key); 
} 

Ben kendisine göndermek herhangi bir parametre türü alay edecek bir RhinoMocks saplama yazabilir miyim? İdeal, bunun gibi görünecektir:

var mock = MockRepository.GenerateStub<IMyCache>(); 
mock.Stub(m => m.Get<T>(1234)).Return(new T()); 

bir beton sınıfı olmak T bekliyor çünkü bu çalışmıyor, ama bunu genericize istiyorum. Mümkün mü?

cevap

3

Yapabileceğinizi sanmıyorum. Gergedan alaylarıyla testler yazarken, derleyicinin kurallarına uymalısınız ve genel T türünü belirtmekten kaçınmalısınız, derleyiciyi mutsuz eder. Birden testler arasında bu saplama-kodu yeniden gerekiyorsa burada önerildiği üzere

, T için farklı türleri kullanarak her biri bir yardımcı yöntemini yapabilirsiniz: Rhino Mocks: How to stub a generic method to catch an anonymous type?

İlgili konular