2011-09-22 10 views
5

Załóżmy, że mam mocno wpisany interfejs buforowania, który chcę udawać. Potrzeba jakichkolwiek przedmiotów i zwraca je w następujący sposób:Wyśmiewać wywołanie metody ogólnie

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

można napisać niedopałek RhinoMocks że będą drwić dowolnego typu parametru, że wysłanie do niego? Idealnie byłoby to po prostu wyglądać następująco:

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

To nie działa, ponieważ spodziewa T być beton klasy, ale chciałbym go genericize. czy to możliwe?

Odpowiedz

3

Nie sądzę, że możesz. Pisząc testy za pomocą nosa, musisz przestrzegać reguł kompilatora, a unikanie określenia typowego typu T powoduje, że kompilator jest niezadowolony.

Jeśli trzeba ponownie użyć tej skrótowej kodu pomiędzy wieloma testami, każdy przy użyciu różnych typów dla T, można dokonać metody pomocnika jak zaproponowano tutaj: Rhino Mocks: How to stub a generic method to catch an anonymous type?