Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.2K
Vistas
Expresión no admitida: los miembros no reemplazables (aquí: ) no se pueden usar en expresiones de configuración/verificación

Estoy usando xUnit y Moq para escribir casos de prueba. Estoy usando el código a continuación para crear un simulacro, pero obtengo el problema resaltado.

Imagen del código y el error pegado a continuación

 CloudBlockBlob source = null; AccessCondition sourceAccessCondition = null; AccessCondition destAccessCondition = null; BlobRequestOptions options = null; OperationContext operationContext = null; CloudBlobContainer container = new CloudBlobContainer(uri); Task task = null; DeleteSnapshotOption deleteSnapshotOption = new DeleteSnapshotOption(); var mockCloudBlobClient = new Mock<Microsoft.WindowsAzure.Storage.Blob.CloudBlobClient>(); mockCloudBlobClient.Setup(repo => repo.GetContainerReference("sample")).Returns(container); var mockCloudBlobContainer = new Mock<Microsoft.WindowsAzure.Storage.Blob.CloudBlobContainer>(uri); mockCloudBlobContainer.Setup(repo => repo.GetBlockBlobReference("sample")).Returns(new CloudBlockBlob(uri)); var mockBlobServiceProvider = new Mock<BlobServiceProvider>(); mockBlobServiceProvider.Setup(repo => repo.GetBlockBlobContainer("sample")).Returns(new CloudBloblContainer(new Uri("http://mytest")));

La línea mockBlobServiceProvider.Setup(repo => repo.GetBlockBlobContainer("sample")).Returns(new CloudBloblContainer(new Uri("http://mytest"))); me esta dando este error:

System.NotSupportedException: 'Expresión no admitida: repo => repo.GetBlockBlobContainer("muestra")

Los miembros no reemplazables (aquí: BlobServiceProvider.GetBlockBlobContainer) no se pueden usar en expresiones de configuración/verificación.'

Clase BlobServiceProvider :

 Public Class BlobServiceProvider { public CloudBlobContainer GetBlockBlobContainer(string containerName) { CloudBlobContainer Container = blobClient.GetContainerReference(containerName); Container.CreateIfNotExistsAsync(); return Container; } }

¿Cómo puedo resolver este problema?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

El moq usa un proxy dinámico para crear un envoltorio alrededor del tipo simulado para poder interceptar llamadas y cambiar el comportamiento de los métodos invocados.

¿Cómo se construye el proxy?

  • Si el proxy de la interface simulada es solo una implementación de la interfaz
  • Si tiene class el proxy anula la clase

Pregunta: ¿Podría simular una sealed class o un método no virtual ( abstract )?

Adivinas, no. No hay forma de crear un envoltorio a su alrededor usando un proxy dinámico. moq en sí mismo sugiere lo mismo, si observa el error:

Los miembros no reemplazables (aquí: BlobServiceProvider.GetBlockBlobContainer) no se pueden usar en la configuración


Para responder a su pregunta, debe extraer la interface de su proveedor y simularla o marcar el método como virtual. Personalmente, prefiero la opción con la interface , pero podría requerir alguna refactorización y DI.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda