2011-09-22 12 views
5

Supongamos que tengo una interfaz de caché fuertemente tipada que quiero simular. Se necesita ningún tipo de objeto y los devuelve, como esto:Burlarse de un método llamar genéricamente

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

¿Puedo escribir un talón RhinoMocks que burlarse de cualquier tipo de parámetro que envío a ella? Lo ideal sería que sólo se vería algo como esto:

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

Esto no funciona porque está a la espera T para ser una clase concreta, pero me gustaría que genericize. es posible?

Respuesta

3

No creo que puedas. Al escribir pruebas con rinocerontes falsos, debe seguir las reglas del compilador y evitar especificar el tipo genérico T, lo que hace que el compilador no esté satisfecho.

Si necesita volver a utilizar esa trozo de código entre múltiples pruebas, cada uno con diferentes tipos de T, puede realizar un método de ayuda como se propone aquí: Rhino Mocks: How to stub a generic method to catch an anonymous type?

Cuestiones relacionadas