Establecer Propiedades de Blob en Objeto CloudBlob de C# para Pruebas.
Tengo un objeto Microsoft.Azure.Storage.Blob.CloudBlob y estoy llamando al getter blob.Properties para obtener el objeto BlobProperties del blob. Quiero el objeto BlobProperties para poder leer y almacenar la propiedad BlobProperties::LastModified del objeto en mi propio modelo personalizado.
No puedo probar esto porque no puedo construir un objeto BlobProperties con una propiedad LastModified no nula. No puedo construir el objeto esperado porque no hay constructores o setters disponibles para establecer la propiedad LastModified. Solo tengo un constructor por defecto y uno de copia disponible:
public sealed class BlobProperties{
public BlobProperties();
public BlobProperties(BlobProperties other);
public DateTimeOffset? LastModified { get; }
}
var props = new Moq.Mock<blobproperties>() // Error, no se puede burlar una clase sellada
props.Setup(p => p.LastModified).Returns(DateTime.Now); // No disponible ya que no se puede burlar la clase
// Usar BlobProperties burlado como valor de retorno para un CloudBlockBlob burlado
var blob = new Moq.Mock<cloudblockblob>()
blob.Setup(b => b.Properties).Returns(props.Object);
...
// Mi adaptador de modelo personalizado
LastModified lastModified = blob.Properties.LastModified;
Soy nuevo en C# y pensé que esto podría resolverse burlándose con Moq, pero la clase está marcada como sellada, por lo que no se puede burlar. El uso de shims no es una opción.
Entonces mi pregunta es…
¿Cómo puedo instanciar o anular el getter para que la propiedad LastModified de un BlobProperties devuelva algún valor no nulo?
Estoy usando Microsoft.Azure.Storage.Blob, Version=11.2.2.0
Ver BlobProperties
Ver CloudBlob
davy.ai
Respuesta
Lamentablemente, dado que la clase
BlobProperties
está marcada comosealed
, no se puede simular y no se puede establecer la propiedadLastModified
. La única manera de obtener un objetoBlobProperties
con una propiedadLastModified
no nula es obtenerlo de un objetoCloudBlob
existente.