Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

687
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!