Moq permite la burla de miembros virtuales protegidos (see here). ¿Es posible hacer lo mismo en FakeItEasy?¿Cómo burlarse de miembros virtuales protegidos en FakeItEasy?
8
A
Respuesta
24
Se puede hacer, sin embargo, no se puede hacer de la caja. El truco es implementar IFakeObjectCallRule y agregarlo a tu falso a través de Fake.GetFakeManager (foo) .AddRule (myRule).
Estoy pensando en implementar esta característica, sin embargo, sería algo como esto:
A.CallTo (foo) .WhereMethod (x => x.Name == "MyProtectedMethod") devuelve (". lo que sea");
Sin embargo, la sintaxis no es del todo refinada.
Editar La característica mencionada anteriormente ahora se implementa:
A.CallTo(foo).Where(x => x.Method.Name == "MyProtectedMethod").WithReturnType<int>().Returns(10);
12
Además de la respuesta de Patrik, pensé que sería relevante en este post para agregar una punta de cómo se puede burlarse de una propiedad protegida miembro:
A.CallTo(foo).Where(x => x.Method.Name == "get_MyProtectedProperty").WithReturnType<int>().Returns(10);
Así es como la reflexión trata los métodos de obtención de propiedades 'getter'.
Espero que ayude :)
Cuestiones relacionadas
- 1. Cómo simular miembros virtuales protegidos con Rhino.Mocks?
- 2. ¿Cómo burlarse de métodos no virtuales?
- 3. Miembros privados y protegidos: C++
- 4. Miembros protegidos de otras instancias en Scala
- 5. Patrón de módulo de JavaScript - ¿Miembros protegidos?
- 6. Burlando de miembros virtuales en Moq
- 7. Sintaxis para los miembros virtuales
- 8. Acceso a miembros protegidos en una clase derivada
- 9. Acceso a los miembros protegidos de subclases: gcc vs msvc
- 10. ¿Puede Rhino burlarse de los miembros más profundos/anidados directamente?
- 11. ¿Es posible evitar que Doxygen genere miembros protegidos?
- 12. ¿Los miembros virtuales se llaman mediante reflejo (en circunstancias normales)?
- 13. cómo It.IsAny <T> en FakeItEasy?
- 14. Punteros a funciones de miembros virtuales. ¿Como funciona?
- 15. Burlarse de métodos no virtuales en C++ sin editar el código de producción?
- 16. ¿Cómo burlarse de EntityManager?
- 17. miembros protegidos con Java accedidos en clase derivada utilizando la instancia de clase base
- 18. ¿Por qué las clases generadas por JAXB tienen miembros protegidos y cómo puedo cambiar esto?
- 19. Cómo/qué burlarse en BDD
- 20. ¿Por qué se permiten los miembros protegidos en las clases finales de Java?
- 21. ¿Cómo burlarse de los servicios con Arquillian?
- 22. java: cómo burlarse de Calendar.getInstance()?
- 23. Cómo burlarse de un aspecto
- 24. métodos "protegidos" en C#?
- 25. ¿Cómo burlarse de PreferenceManager en Android?
- 26. NHibernate excepción: método Add debe ser 'público/virtuales protegidos' o 'interna protegida virtual'
- 27. ¿Para burlarse o no para burlarse?
- 28. ¿FakeItEasy admite la idea de Mocks parciales?
- 29. FakeItEasy Crear una falsificación de una clase
- 30. Inicializar los miembros protegidos del padre con la lista de inicialización (C++)
Impresionante. Muchas gracias por la nueva característica. Ahora puedo eliminar mi propia regla nuevamente. –
Probé el código que proporcionó anteriormente, pero todavía se está llamando al método MyProtectedMethod. Esperaría que devuelva el valor de devolución falso pero no para llamar al método original. ¿Estoy haciendo algo mal? – stusherwin
@stusherwin Quizás el método no sea virtual? –