Nos gustaría burlarnos de la clase OperationContext
con fines de prueba. Estamos usando 'Mock'. Pero OperationContext
es una clase sellada y no se puede burlar. Por lo tanto, estamos intentando crear un objeto ficticio OperationContext
. Pero el constructor OperationContext
toma IContextChannel
como parámetro. Nos gustaría conocer una forma de obtener un IContextChannel
para que se pueda pasar al constructor OperationContext
.WCF Data Services: Mocking OperationContext
Respuesta
El NetFX project contiene varias clases e interfaces de contenedor para permitir este tipo de cosas.
La recomendación general es implement wcf services without referencing wcf.
Ejemplos cómo hacerlo están en http://marcin.floryan.pl/blog/2012/01/do-we-really-need-wcfmock
Hemos sustituido una referencia a OperationContext con una referencia a operationResponse. OperationResponse debe definirse como una interfaz y puede inyectarse en el constructor al igual que el repositorio en el ejemplo dado. Nuestro método de prueba ahora se convierte en ligeramente más corto y más legible.
Y en http://blogs.msdn.com/b/ploeh/archive/2006/12/04/integrationtestingwcfservices.aspx
déjenos, por un momento, considerar la necesidad de realizar la autorización. Usted podría inspeccionar OperationContext.Current directamente en cada una de sus implementaciones de operación , pero eso sería una mezcla de preocupaciones (lógica de negocio implementada en la operación mezclada con autorización). La forma correcta sería proporcionar una clase derivada de ServiceAuthorizationManager, y configurar el servicio para usar esta clase para autorización. Esto le permitiría mantener la unidad de prueba en sus implementaciones de operación, pero obviamente, también necesita probar el administrador de autorizaciones, y resulta que la prueba de integración es la forma más fácil de lograr esta tarea.
Si aún necesita seguir un simulacro de recomendación de http://blogs.msdn.com/b/ploeh/archive/2008/06/28/unit-testing-duplex-wcf-services.aspx
Todo lo que tiene que hacer es reemplazar la llamada toOperationContext.GetCallbackChannel con algo abstracto. En .NET 3.5, la abstracción más fácil es Func, que tiene la misma firma , pero si está en .NET 3.0, siempre puede definir un tipo de delegado similar propio.
alternativa como último recurso se puede utilizar WCFmock
#if DEBUG
using WebOperationContext = System.ServiceModel.Web.MockedWebOperationContext;
#endif
Esto es útil, por ejemplo, si desea utilizar la versión burlado en desarrollo, y siempre la versión WCF en la producción.Eso es todo, no es necesario tocar su aplicación de servicio existente en absoluto, una vez ha definido ese alias, el servicio está listo para ser probado
De http://blog.gfader.com/2010/08/how-to-unit-test-wcf-service.html
todas sus llamadas a OperationContext .Current.Channel.SessionId get interceptado por MockedOperationContext, pero solo en sus pruebas está burlándose de OperationContext. En su entorno normal, MockedOperationContext actúa como un proxy para el OperationContext real.
- 1. WCF/WCF Data Services/Servicios WCF RIA
- 2. WCF Data Services Opciones de seguridad
- 3. WCF REST vs. ADO.NET Data Services
- 4. error de solicitud con WCF Data Services
- 5. WCF Data Services o Entity Framework
- 6. Colección existe Criteria en WCF Data Services
- 7. Manejo de excepciones con WCF Data Services
- 8. diferencia entre el API Web WCF y WCF Data Services
- 9. Cómo deshabilitar esquemas de autenticación de WCF Data Services
- 10. Cómo manejar json DateTime devuelto por WCF Data Services (OData)
- 11. .NET RIA Services/WCF Services
- 12. RIA Services vs ADO.NET Data Services
- 13. Diferencia entre WCF Service, WCF RIA Services y WCF Data Service
- 14. WCF: recuperación de MethodInfo from OperationContext
- 15. Creación de servicio WCF comprobable sin OperationContext
- 16. ¿Se pueden implementar WCF Data Services o RIA Services con NHibernate?
- 17. Reutilizar tipos existentes con ADO.NET Data Services
- 18. Ria Services vs WCF Dataservices
- 19. Encabezados en OperationContext
- 20. ASP.net Web Services versus WCF
- 21. WCF at Services estado fallido
- 22. Tiempos de espera WCF Services
- 23. WCF: distinguir entre solicitudes RESTO y SOAP utilizando OperationContext
- 24. Microsoft Master Data Services: ¿Cuándo utilizarlo?
- 25. Integrando XMLRPC/Web Services con Core Data
- 26. diferencia entre WCF Services y Web Services y REST Service
- 27. ¿Cómo consumir un objeto complejo desde un sproc utilizando WCF Data Services/OData?
- 28. ¿Por qué falta mi método ServiceOperation en el código proxy de mi cliente WCF Data Services?
- 29. Mejores prácticas para integrar AutoMapper con WCF Data Services y EF4
- 30. WCF Ria Services ChangeSet.GetOriginal(): ¿Cómo funciona?
¿Puede proporcionarnos los nombres de las clases contenedoras? No pude ver la documentación en el enlace. –