es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Respuesta

    Lamentablemente, dado que la clase BlobProperties está marcada como sealed, no se puede simular y no se puede establecer la propiedad LastModified. La única manera de obtener un objeto BlobProperties con una propiedad LastModified no nula es obtenerlo de un objeto CloudBlob existente.

Comments are closed.