2011-01-08 44 views
15

Estoy trabajando en un sistema que usa Azure Table Storage. En otros sistemas (por ejemplo, SQL, File based, etc.), puedo escribir un falso que me permita probar mi lógica de persistencia de datos. Sin embargo, no veo una manera fácil de crear un falso para Azure Table Service.¿Cómo falsificar Azure Table Storage en .NET para pruebas unitarias?

Podría crear un nuevo proyecto de IIS que se comporte de la misma manera, pero esa no es una buena manera de escribir una prueba de unidad, es más una prueba de integración.

¿Alguna idea sobre cómo probar el código de acceso a los datos de prueba que utiliza el cliente Azure Table Storage?

Gracias, Erick

Respuesta

0

Esto es algo que actualmente estoy pensando en mí mismo, pero no he probado todavía.

TableServiceContext incorpora DataServiceContext, por lo que me parece que si pudiera inyectar el TableServiceContext como un DataServiceContext, podría modelar el Table Store utilizando los servicios de datos.

Dando un paso más, si usa Entity Framework "Code First" para crear su Modelo de entidad, puede usar las Entidades de tabla que ya creó como entidades de respaldo para su servicio de datos y todo debería funcionar sin problemas .

Esa es la teoría al menos. Nunca lo intenté.

http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storageclient.tableservicecontext_members.aspx

+0

Gracias por la respuesta. Estoy seguro de que lo sigo por completo. ¿Sugiere usar los servicios de datos de WCF (localmente) como objetivo para las pruebas de tabla de Azure? Si es así, me gusta la idea, pero me preocupan las diferencias extrañas entre los dos. Avíseme si lo ha probado y yo haré lo mismo. ¡Gracias! –

0

uso una aplicación en memoria de ICloudTableStorage, que puede pasar a ReliableCloudTableRepository por ejemplo.

Puede encontrar el código aquí: https://gist.github.com/4078750

+0

Esto lo vincula a un archivo sin código. No sé lo que solía contener, pero en este momento no es nada. –

+0

@DanCsharpster Ah sí. Cuando la pregunta se publicó originalmente, creo que todo el mundo estaba usando Azure SDK de CloudFx. Eventualmente desaproveché mi esencia a favor de una clase que estuvo disponible en sus propias bibliotecas, que es lo que ahora dice la esencia: '// use Microsoft.Experience.CloudFx.Framework.Storage.InMemoryCloudTableStorage'. Puede ver el código anterior bajo revisiones (https://gist.github.com/timiles/4078750/revisions), pero dado que depende de CloudFx, no hay ninguna razón para no usar su propia clase ahora. Podría buscar reinstalarlo, pero tenga en cuenta que Azure ha cambiado mucho desde 2012. –

+0

Gracias @Tim Iles! Lo comprobaré. Para su información, también estoy ingresando a Azure Storage Emulator. Parece que tiene cierto potencial para las pruebas de integración. https://azure.microsoft.com/en-us/documentation/articles/storage-use-emulator/ –

0

Sé que hay varias soluciones publicadas aquí, pero aquí está el que ocurrió:

http://azurator.blogspot.com/2013/07/unit-testing-azure-table-storage-queries.html

Ésta es sólo una solución para cuando estás consultando objetos usando CloudTableQuery<T>, pero me ayudó mucho. Si está tratando de obtener una implementación más completa, también puede crear un calce para DataServiceContext.SaveChanges() que pueda obtener la parte de actualización.

0

Estaba considerando esto más para pruebas de integración, pero supongo que también podría funcionar para pruebas unitarias. Conoce Azure Storage Emulator. Parece una herramienta muy buena para probar Azure Blob, Queue y Table Services. Estoy jugando con eso y trataré de publicar mis hallazgos si puedo recordar hacerlo.

Cuestiones relacionadas